在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,私有属性
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?