Hoe werkt de @property-decorateur in Python?

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

Ik zou graag willen weten hoe de ingebouwde functie property werkt. Wat me in de war brengt, is dat property ook als decorateur kan worden gebruikt, maar dat het alleen argumenten nodig heeft als het als ingebouwde functie wordt gebruikt en niet als het als decorateur wordt gebruikt.

Dit voorbeeld komt uit de documentatie:

class C: def __init__(self): self._x = Geen def getx(self): return self._x def setx(self, value): self._x = value def delx(self): del self._x x = property(getx, setx, delx, "Ik ben de "x" eigenschap.") 

property"s argumenten zijn getx, setx, delx en een doc string.

In de onderstaande code wordt property gebruikt als een decorateur . Het object ervan is de functie x, maar in de bovenstaande code is er geen plaats voor een objectfunctie in de argumenten.

class C: def __init__(self ): self._x = Geen @property def x(self): """Ik ben de eigenschap "x".""" return self._x @x.setter def x(self, value ): self._x = waarde @x.deleter def x(self): del self._x 

Hoe zijn de x.setter en x .deleter decorateurs gemaakt in dit geval?