Ich möchte eine Klasseneigenschaft festlegen, die von allen Instanzen der Klasse oder ihrer Unterklassen gemeinsam genutzt werden kann. Es sollte für jede Instanz möglich sein, auch die Eigenschaft festzulegen.Klasseneigenschaft, auf die von allen Instanzen (auch von Unterklassen) zugegriffen werden kann.
Ich habe versucht, die folgenden:
class A:
x = 1
@classmethod
def setX(cls, val):
if cls.__bases__:
cls = cls.__bases__[-1]
cls.x = val
Dies scheint bei einzelnen Erbe zu funktionieren. Aber wenn ich mehrere Vererbung, abhängig von der Reihenfolge der Vererbung, es funktioniert entweder oder nicht (d. H. Klasse A ist nicht immer die letzte Basen).
Irgendwelche Ideen für eine robuste Implementierung?
Setters und Getter sind eine wirklich schlechte Praxis in Python - ich kann nicht sagen, ob dies nur ein Beispiel aus Gründen der Frage ist, oder etwas, das Sie wirklich machen. Wenn das letztere, dann überprüfen Sie die ['' property() 'Builtin /' '@ property'' Decorator] (http://docs.python.org/library/functions.html#property). –
Nur mit 'A.x' funktioniert nicht? –