Atributos de nomes de nomes e atributos de classe "private" em Python
Eu estava escrevendo um decorador que precisa acessar variáveis privadas e encontrei essa discrepância. Alguém pode explicar isso?
(Python 2.5)
Nomear mangling funciona conforme o esperado para os atributos definidos na classe:
>>> class Tester(object):
... __foo = "hi"
>>> t = Tester()
>>> t._Tester__foo
'hi'
Atributos de instância não funcionam (e é assim que devemos fazer certo?)
>>> class Tester(object):
... def __init__(self):
... self.__foo = "hi"
>>> t = Tester()
>>> t._Tester__foo
AttributeError: 'Tester' object has no attribute '_Tester__foo'
P.S. O "atributo de classe" é a palavra certa para isso? Eles não são estáticos, mas se você fizer um desses uma lista, ou algum outro tipo mutável, ele é compartilhado ...
Atualizar
Na verdade, o segundo exemplo também funciona bem. Foi um problema de hardware (o reinício ajudou).