Python 私有属性
class A():
def __init__(self):
self.__var = 5
def get_var(self):
return self.__var
def set_var(self, value):
self.__var = value
var = property(get_var, set_var)
a = A()
a.var = 10
print a.var == a._A__var
有人能解释一下为什么结果是 False
吗?
1 个回答
4
property
装饰器只适用于新式类。在 Python 2.x 中,你需要继承 object
类:
class A(object):
def __init__(self):
self.__var = 5
def get_var(self):
return self.__var
def set_var(self, value):
self.__var = value
var = property(get_var, set_var)
如果没有新式类的特性,执行 a.var = 10
这行代码只是把一个新值(10
)绑定到一个新的成员属性 a.var
上。