Jak działa dekorator @property w Pythonie?

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

Chciałbym zrozumieć, jak działa wbudowana funkcja właściwość. To, co mnie dezorientuje, to fakt, że właściwość może być również używana jako dekorator, ale pobiera argumenty tylko wtedy, gdy jest używana jako funkcja wbudowana, a nie jako dekorator.

To przykład pochodzi z dokumentacji:

class C: def __init__(self): self._x = Brak def getx(self): return self._x def setx(self, value): self._x = wartość def delx(self): del self._x x = property(getx, setx, delx, „Jestem właściwością „x”.) 
Argumenty

property” to getx, setx, delx i dokumentacja.

W poniższym kodzie właściwość jest używana jako dekorator . Jej obiektem jest funkcja x, ale w powyższym kodzie nie ma miejsca na funkcję obiektu w argumentach.

class C: def __init__(self ): self._x = Brak @property def x(self): „”„Jestem właściwością „x”.„„” return self._x @x.setter def x(self, value ): self._x = wartość @x.deleter def x(self): del self._x 

Jak się mają x.setter i x .deleter utworzone w tym przypadku?