Frage:
Ist es möglich, die Funktion property() in Verbindung mit zu verwenden? Funktionen, die mit der @class-Methode dekoriert sind Dekorateur?
Antwort:
Python 3.8 und älter:
Für Python 3.8 und früher lautet die empfohlene Lösung: Erstellen Sie die Eigenschaft für die Metaklasse und nicht für die Klasse, da Eigenschaften für Instanzen und nicht für Klassen gelten. Hier ist ein Beispiel:
class Foo(object): _var = 5 class __metaclass__(type): # Python 2 syntax for metaclasses def var(cls): return cls._var def var(cls, value): cls._var = value # Python 3 syntax for metaclasses class Meta(type): ... class Foo(metaclass=Meta): ...
Python 3.9 und höher:
Ab Python 3.9 ist es möglich, sowohl @classmethod- als auch @property-Dekoratoren in Kombination zu verwenden. Hier ist ein Beispiel:
class Foo(object): _var = 5 @classmethod @property def var(cls): return cls._var @var.setter def var(cls, value): cls._var = value
In diesem Beispiel werden die Eigenschaftsmethoden für die Klasse selbst erstellt.
Das obige ist der detaillierte Inhalt vonKönnen Klassenmethoden Eigenschaften in Python verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!