我不认为我的头衔能够充分解释我所谈论的内容。以此代码为例:
>>> class D:
... x = None
... @property
... def hello(self):
... return self.x
... @hello.setter
... def hello(self, text):
... self.x = text
...
>>> d = D()
>>> d.hello = 'hello world'
>>> print d.hello
hello world
>>> print d.x
None
由于某种原因,d.hello和d.x不会返回相同的结果。这里发生了什么?
答案 0 :(得分:3)
D
是一个旧式类,因此不支持描述符:d.hello = 'hello world'
不调用setter,它只是创建一个实例属性,它隐藏(无用的)描述符{{1} }。继承自D.hello
:
object