实例讲解Python中的私有属性

你虚度的今日是昨日逝去的人无限向往的明天。美丽的早晨,把压力释放,清凉的秋风,把欢乐吹响,温柔的阳光,把温馨点亮,轻松的心情,把幸福送上,早安!

在Python中可以通过在属性变量名前加上双下划线定义属性为私有属性,如例子:


#! encoding=UTF-8

class A:
def __init__(self):

# 定义私有属性
self.__name = "wangwu"

# 普通属性定义
self.age = 19

a = A()

# 正常输出
print a.age

# 提示找不到属性
print a.__name

执行输出:

Traceback (most recent call last):
File "C:\Users\lee\Documents\Aptana Studio 3 Workspace\testa\a.py", line 19, in <module>
print a.__name
AttributeError: A instance has no attribute '__name'

访问私有属性__name时居然提示找不到属性成员而不是提示权限之类的,于是当你这么写却不报错:

#! encoding=UTF-8

class A:
def __init__(self):

# 定义私有属性
self.__name = "wangwu"

# 普通属性定义
self.age = 19


a = A()

a.__name = "lisi"
print a.__name

执行结果:
1
lisi
在Python中就算继承也不能相互访问私有变量,如:

#! encoding=UTF-8

class A:
def __init__(self):

# 定义私有属性
self.__name = "wangwu"

# 普通属性定义
self.age = 19


class B(A):
def sayName(self):
print self.__name


b = B()
b.sayName()

执行结果:

Traceback (most recent call last):
File "C:\Users\lee\Documents\Aptana Studio 3 Workspace\testa\a.py", line 19, in <module>
b.sayName()
File "C:\Users\lee\Documents\Aptana Studio 3 Workspace\testa\a.py", line 15, in sayName
print self.__name
AttributeError: B instance has no attribute '_B__name'

或者父类访问子类的私有属性也不可以,如:

#! encoding=UTF-8

class A:
def say(self):
print self.name
print self.__age


class B(A):
def __init__(self):
self.name = "wangwu"
self.__age = 20

b = B()
b.say()

执行结果:

wangwu
Traceback (most recent call last):
File "C:\Users\lee\Documents\Aptana Studio 3 Workspace\testa\a.py", line 15, in <module>
b.say()
File "C:\Users\lee\Documents\Aptana Studio 3 Workspace\testa\a.py", line 6, in say
print self.__age
AttributeError: B instance has no attribute '_A__age'

本文实例讲解Python中的私有属性到此结束。不论你在什么时候结束,重要的是结束之后就不要悔恨。小编再次感谢大家对我们的支持!

您可能有感兴趣的文章
Python自动化运维-使用Python脚本监控华为AR路由器关键路由变化

Python自动化运维-netmiko模块设备自动发现

Python自动化运维—netmiko模块连接并配置华为交换机

Python自动化运维-利用Python-netmiko模块备份设备配置

Python自动化运维-Paramiko模块和堡垒机实战