Как работает декоратор @property в Python?

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

Я хотел бы понять, как работает встроенная функция property. Что меня смущает, так это то, что property также можно использовать в качестве декоратора, но он принимает аргументы только при использовании в качестве встроенной функции, а не при использовании в качестве декоратора.

Это пример взят из документации:

класс C: def __init__(self): self._x = None def getx(self): return self._x def setx(self, value): self._x = значение def delx(self): del self._x x = property(getx, setx, delx, "I"m the "x" property.") 

property аргументами являются getx, setx, delx и строку документа.

В приведенном ниже коде property используется как декоратор . Его объектом является функция x, но в приведенном выше коде нет места для объектной функции в аргументах.

class C: def __init__(self ): self._x = None @property def x(self): """Я являюсь свойством "x"""" return self._x @x.setter def x(self, value ): self._x = value @x.deleter def x(self): del self._x 

Как работают x.setter и x .deleter декораторы, созданные в этом случае?