Ich bin daran interessiert, einige Diskussion über Klasse Attribute in Python zu hören. Zum Beispiel, was ist ein guter Anwendungsfall für Klassenattribute? Im Großen und Ganzen kann ich mir keinen Fall vorstellen, in dem ein Klassenattribut einem Attribut auf Modulebene vorzuziehen ist. Wenn das wahr ist, warum gibt es sie dann?
Das Problem, das ich mit ihnen habe, ist, dass es fast zu einfach ist, einen Klassenattributwert versehentlich zu verletzen, und dann hat sich Ihr "globaler" Wert in ein lokales Instanzattribut verwandelt.
Bitte kommentieren Sie, wie Sie die folgenden Situationen angehen würden:
- Konstante Werte, die von einer Klasse und/oder Unterklassen verwendet werden. Dazu können Wörterbuchschlüssel mit "magischen Zahlen" oder Listenindizes gehören, die sich nie ändern, aber möglicherweise einmalig initialisiert werden müssen.
- Standardklassenattribut, das in seltenen Fällen für eine spezielle Instanz der Klasse aktualisiert wird.
- Globale Datenstruktur zur Darstellung des internen Zustands einer Klasse, die von allen Instanzen gemeinsam genutzt wird.
- Eine Klasse, die eine Reihe von Standardattributen initialisiert, die nicht durch Konstruktorargumente beeinflusst werden.
Einige verwandte Beiträge:
Unterschied zwischen Klassen- und Instanzattributen