Wie funktioniert der @property Decorator in Python?

| | | | | | | | | | | |

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?