Ich habe eine Klasse wie:__getattr__ für statisches/Klassenvariablen in Python
class MyClass:
Foo = 1
Bar = 2
Wenn MyClass.Foo
oder MyClass.Bar
aufgerufen wird, ich brauche eine benutzerdefinierte Methode aufgerufen werden, bevor der Wert zurückgegeben wird. Ist es in Python möglich? Ich weiß, dass es möglich ist, wenn ich eine Instanz der Klasse erstelle und ich meine eigene __getattr__
Methode definieren kann. Aber mein scnenario beinhaltet die Verwendung dieser Klasse als solche, ohne irgendeine Instanz davon zu erzeugen.
Auch ich brauche eine benutzerdefinierte __str__
Methode aufgerufen werden, wenn str(MyClass.Foo)
aufgerufen wird. Bietet Python eine solche Option?
Dank Ignacio und Matt. Ich denke jetzt verstehe ich, wie Klasse (nicht Instanz) Schöpfung funktioniert und auch ich dachte, dass das erforderliche __str__ Verhalten schwierig zu erreichen war. Ich denke, Metaklassen sollten für meine Anforderung gut genug sein. :) – Tuxdude
Wenn Sie immer 'AttributeError' bekommen, sehen Sie sich die andere Antwort an, die die Syntax für python3 hat (dieses Beispiel scheint python2 zu sein) – Chris