Ich würde gerne verstehen, wie die eingebaute Funktion property
funktioniert. Was mich verwirrt ist, dass property
auch als Decorator verwendet werden kann, aber nur Argumente akzeptiert, wenn es als eingebaute Funktion verwendet wird und nicht, wenn es als Decorator verwendet wird.
Das Beispiel stammt aus der Dokumentation:
Klasse C: def __init__(self): self._x = Keine def getx(self): return self._x def setx(self, value): self._x = value def delx(self): del self._x x = property(getx, setx, delx, "Ich bin die Eigenschaft "x".")
Die Argumente von property
sind getx
, setx
, delx
und ein Doc-String.
Im folgenden Code wird property
als Dekorator verwendet . Das Objekt davon ist die Funktion x
, aber im obigen Code ist kein Platz für eine Objektfunktion in den Argumenten.
class C: def __init__(self ): self._x = None @property def x(self): """Ich bin die "x"-Eigenschaft.""" return self._x @x.setter def x(self, value ): self._x = value @x.deleter def x(self): del self._x
Wie sind x.setter
und x .deleter
Dekorateure in diesem Fall erstellt?