Python «личное» искажение имени и экземпляр против атрибутов класса
Я писал декоратор, которому нужен доступ к закрытым переменным, и обнаружил это несоответствие. Кто-нибудь может объяснить это?
(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'
Постскриптум Является & quot; атрибутом класса & quot; правильное слово для этого? Они не являются статичными, но если вы сделаете один из них списком или каким-либо другим изменяемым типом, он будет доступен ...
Update
На самом деле, второй пример тоже работает нормально. Это была аппаратная проблема (перезагрузка помогла).