我正在编写一个需要访问私有变量的装饰器并发现了这种差异。谁能解释一下?
(Python 2.5)
对于类中定义的属性,命名修饰按预期工作:
>>> class Tester(object):
... __foo = "hi"
>>> t = Tester()
>>> t._Tester__foo
'hi'
实例属性不起作用(这是我们应该做的正确的方式?)
>>> class Tester(object):
... def __init__(self):
... self.__foo = "hi"
>>> t = Tester()
>>> t._Tester__foo
AttributeError: 'Tester' object has no attribute '_Tester__foo'
PS“类属性”是正确的词吗?它们不是静态的,但是如果您将其中之一设为列表或其他一些可变类型,则它是共享的...
更新
实际上,第二个示例也可以正常工作。这是一个硬件问题(重启有帮助)。