Ich schrieb einen Dekorator, der auf private Variablen zugreifen muss und diese Diskrepanz gefunden. Kann das jemand erklären?Python "private" Name Mangling und Instanz vs Klasse Attribute
(Python 2.5)
Naming Mangeln Werke wie für Attribute erwartet in der Klasse definiert:
Instanz Attribute funktionieren nicht (und das ist die Art, wie wir sollen, es richtig machen?)
>>> class Tester(object):
... def __init__(self):
... self.__foo = "hi"
>>> t = Tester()
>>> t._Tester__foo
AttributeError: 'Tester' object has no attribute '_Tester__foo'
PS Ist "Klassenattribut" das richtige Wort für diese? Sie sind nicht statisch, sondern, wenn Sie einer von denen, machen Sie eine Liste oder eine andere veränderbare Art ist es geteilt ...
aktualisieren
Tatsächlich zweites Beispiel funktioniert gut, auch. Es war ein Hardwareproblem (Neustart half).
Klassenattribut ist das richtige Wort. Und sie werden * immer * geteilt. Mutabilität spielt keine Rolle. Es ist ziemlich egal, außer wenn Sie fragen, ob Sie ein bestimmtes Objekt mutieren können. – delnan
Kann ich diese Frage beantworten? Oder sieht irgendjemand Wert darin, es zu behalten? Ich kann mein ursprüngliches Problem nicht reproduzieren. Es scheint zu funktionieren wie erwartet. – Rafe
Lieber herum, da @MartijnPieters den Test in vielen Python-Tests getestet hat. – jsbueno