python私有属性

时间:2010-05-25 08:52:40

标签: 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 个答案:

答案 0 :(得分: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