Mangling de nombre "privado" de Python y atributos de instancia contra clase

Estaba escribiendo un decorador que necesita acceder a variables privadas y encontré esta discrepancia. ¿Alguien puede explicar esto?

(Python 2.5)

La asignación de nombres funciona de la manera esperada para los atributos definidos en la clase:

>>> class Tester(object):
...    __foo = "hi"

>>> t = Tester()
>>> t._Tester__foo
'hi'

Los atributos de instancia no funcionan (y esta es la forma en que se supone que debemos hacerlo, ¿no?)

>>> class Tester(object):
...     def __init__(self):
...         self.__foo = "hi"

>>> t = Tester()
>>> t._Tester__foo
AttributeError: 'Tester' object has no attribute '_Tester__foo'

PD ¿Es "atributo de clase" la palabra correcta para estos? No son estáticos, pero si haces uno de esos una lista, o algún otro tipo mutable, se comparte ...

Actualizar

De hecho, el segundo ejemplo también funciona bien. Fue un problema de hardware (reinicio ayudado).

Respuestas a la pregunta(1)

Su respuesta a la pregunta