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

На самом деле, второй пример тоже работает нормально. Это была аппаратная проблема (перезагрузка помогла).

Ответы на вопрос(1)

Ваш ответ на вопрос