我正在查看此Python Doc页面:
http://docs.python.org/2/library/functions.html#property
class C(object):
def __init__(self):
self._x = None
def getx(self):
return self._x
def setx(self, value):
self._x = value
def delx(self):
del self._x
x = property(getx, setx, delx, "I'm the 'x' property.")
正下方说:
If then c is an instance of C, c.x will invoke the getter, c.x = value will invoke the setter and del c.x the deleter.
对我来说,c.x = value看起来像是为函数赋值,因为c.x是一个函数,除非“=”运算符被重载。这是在发生什么事吗?
与del c.x相同
感谢。
答案 0 :(得分:3)
property
是一个描述符,它改变了Python处理属性访问的方式。 Python文档有article introducing descriptors。
当Python访问使用__get__
方法指向对象的属性时,它将返回该方法返回的内容而不是对象本身。同样,=
会将__set__
和del
委托给__delete__
。 the docs中描述了特殊方法。