我正在尝试使用新型属性声明:
class C(object):
def __init__(self):
self._x = 0
@property
def x(self):
print 'getting'
return self._x
@x.setter
def set_x(self, value):
print 'setting'
self._x = value
if __name__ == '__main__':
c = C()
print c.x
c.x = 10
print c.x
并在控制台中查看以下内容:
pydev debugger: starting
getting
0
File "\test.py", line 55, in <module>
c.x = 10
AttributeError: can't set attribute
我究竟做错了什么?PS:旧式的声明效果很好。
'setting'(文档字符串)转换为print 'setting'(简单调试语句)的编辑。尽管使用print语句当然是合理的,但文档字符串中没有任何伤害或错误,也完全不会影响问题。