Come funziona il decoratore @property in Python?

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

Vorrei capire come funziona la funzione integrata proprietà. Ciò che mi confonde è che proprietà può essere utilizzata anche come decoratore, ma richiede argomenti solo quando viene utilizzata come funzione incorporata e non quando viene utilizzata come decoratore.

Questo esempio è tratto dalla documentazione:

class C: def __init__(self): self._x = Nessuno def getx(self): return self._x def setx(self, value): self._x = value def delx(self): del self._x x = property(getx, setx, delx, "Sono la proprietà "x".") 

property"s argomenti sono getx, setx, delx e una doc string.

Nel codice sotto property è usato come decoratore . L`oggetto è la funzione x, ma nel codice sopra non c`è posto per una funzione oggetto negli argomenti.

class C: def __init__(self ): self._x = Nessuno @property def x(self): """Sono la proprietà "x".""" return self._x @x.setter def x(self, value ): self._x = valore @x.deleter def x(self): del self._x 

Come sono x.setter e x .deleter decoratori creati in questo caso?