Der Versuch, Python statische Variablen zu verstehen, und die folgende verwirrt mich:Python statische Variable Neuzuordnung
>>> class Foo():
... a = [1]
...
>>> f = Foo()
>>> Foo.a.append(2)
>>> Foo.a
[1, 2]
>>> f.a
[1, 2]
>>> f.a.append(3)
>>> f.a
[1, 2, 3]
>>> Foo.a
[1, 2, 3]
>>> # appears that Foo.a and f.a reference same list object
...
>>> Foo.a = 3
>>> f.a
3
>>> Foo.a
3
Basierend auf der oben Antwort auf diese Frage (Static class variables in Python), ich würde erwarten, dass Foo.a und fa getrennt sind Namen, aber dieses Fa wird erst mit Foo.a initialisiert. Diese Erklärung funktioniert, wenn Sie zuerst versuchen, das Objekt über Foo.a zu ändern oder f.a neu zuzuweisen, aber ich bin verwirrt durch die letzten Zeilen. Ich würde erwarten, dass Foo.a = 3 Foo.a nur neu zuweist, aber es scheint auch für fa neu zugewiesen worden zu sein, da es nicht länger auf das Listenobjekt verweist. Wenn Sie zuerst f.a zuweisen, ändert die Neuzuordnung von Foo.a nicht f.a, so dass es scheint, dass f.a syntaktischer Zucker für Foo.a ist, bis f.a explizit zugewiesen wird. Ist das richtig?