在解释属性的文档中,据说:
确保为附加函数提供与原始属性相同的名称(在本例中为 x。)
即,getter、setter 和 deleter 方法都必须具有相同的名称。
为什么?而且,Python 禁止方法重载,不是吗?
编辑:为什么以下代码在 Python 2.6 中运行时会失败?
class Widget(object):
def __init__(self, thing):
self.thing = thing
print self.thing
@property
def thing(self):
return self._thing
@thing.setter
def set_thing(self, value):
self._thing = value
if __name__ == '__main__':
Widget('Some nonsense here')
它的输出是:
Traceback (most recent call last):
File "widget.py", line 16, in <module>
Widget('Some nonsense here')
File "widget.py", line 3, in __init__
self.thing = thing
AttributeError: can't set attribute
当 set_thing() 重命名为 thing() 时,代码可以正常工作。