Я хотел бы понять, как работает встроенная функция 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
декораторы, созданные в этом случае?