Wie kann ich innerhalb von Klassenmethoden in Python auf "statische" Klassenvariablen zugreifen?


Antworten:


166

Anstelle von barverwenden self.baroder Foo.bar. Durch Zuweisen zu Foo.barwird eine statische Variable erstellt, und durch Zuweisen zu self.barwird eine Instanzvariable erstellt.


12
Foo.bar funktioniert, aber self.bar erstellt eine Instanzvariable, keine statische.
Bedwyr

47
bedwyr, "print self.bar" erstellt keine Instanzvariablen (obwohl die Zuweisung zu self.bar erfolgt).
Constantin

@Constantin - das habe ich nicht bemerkt, es ist eine interessante Unterscheidung. Danke für die Korrektur :-)
Bedwyr

2
Wenn Sie jedoch nicht beabsichtigen, dass es einen Ivar gibt, ist es klarer, Foo.classmember zu verwenden.
mk12

2
Wenn Sie statische Variablen verwenden, sollten Sie die Fallstricke hier lesen: stackoverflow.com/questions/68645/… . @Constantin gibt eine der vielen Fallstricke.
Trevor Boyd Smith
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.