sto un po 'confuso da questo comportamento (con Python 3.2):Python doppia sottolineatura pressare
class Bar:
pass
bar = Bar()
bar.__cache = None
print(vars(bar)) # {'__cache': None}
class Foo:
def __init__(self):
self.__cache = None
foo = Foo()
print(vars(foo)) # {'_Foo__cache': None}
Ho letto un po' su come doppio underscore causano nomi degli attributi per essere "storpiato", ma Mi sarei aspettato lo stesso nome, mitragliando in entrambi i casi sopra.
What is the meaning of a single- and a double-underscore before an object name?
Tutte le idee che cosa sta succedendo qui?
Il punto di maneggevolezza è proprio quello di ** impedire ** al secondo caso di funzionare correttamente. L'intento è quello di nascondere l'attributo dal codice esterno. – millimoose