Es gibt einige unterschiedliche Wege innerhalb einer Klasse auf Klassenattribute zuzugreifen, die sich teilweise in bestimmten Situationen verschieden verhalten.
class base(): a=5 @classmethod def ausgabe(cls): print(cls.a) class child(base) a=10
class base(): a=5 @staticmethod def ausgabe(): print(__class__.a) @staticmethod def ausgabe_neu(): print(__class__.a) class child(base) a=10
class verweist auf die Klasse in der die (statische) Methode deklariert wurde, nicht auf die über die sie aufgerufen wird!
Da .ausgabe in base deklariert wurde, verweist class auf base, im Gegensatz zu .ausgabe_neu welches in child deklariert wurde und dessen class dann auf child verweist.
class base(): a=5 @staticmethod def ausgabe(): print(base.a) class child(base) a=10