我想了解内置函数property
是如何工作的。让我困惑的是property
也可以用作装饰器,但它只在用作内置函数时接受参数,而不是用作装饰器时。
这个例子来自留档:
class C:def __init__(self):self._x = None
def getx(self):return self._xdef setx(self, value):self._x = valuedef delx(self):del self._xx = property(getx, setx, delx, "I'm the 'x' property.")
property
的参数是getx
、setx
、delx
和一个doc字符串。
在下面的代码中,property
被用作装饰器。它的对象是x
函数,但在上面的代码中,参数中没有对象函数的位置。
class C:def __init__(self):self._x = None
@propertydef x(self):"""I'm the 'x' property."""return self._x
@x.setterdef x(self, value):self._x = value
@x.deleterdef x(self):del self._x
在这种情况下,x.setter
和x.deleter
装饰器是如何创建的?