Python 私有属性

3 投票
1 回答
2133 浏览
提问于 2025-04-15 23:07
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 上。

撰写回答