Inhaltsverzeichnis

Es gibt einige unterschiedliche Wege innerhalb einer Klasse auf Klassenattribute zuzugreifen, die sich teilweise in bestimmten Situationen verschieden verhalten.

Klassenmethode

class base():
    a=5
    
    @classmethod
    def ausgabe(cls):
        print(cls.a)


class child(base)
    a=10

__class__

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.

Direkter Verweis

class base():
    a=5
    
    @staticmethod
    def ausgabe():
        print(base.a)

class child(base)
    a=10