为何无法实例化?
class Person(object):def __init__(self, name):
self._name = name
def getName(self):
print('fetch....')
return self._name
def setName(self, value):
print('change...')
self._name = value
def delName(self):
print('remove....')
del self._name
_name = property(getName, setName, delName, "name property docs")
x=Person("bob")
File "<stdin>", line 9, in setName
File "<stdin>", line 9, in setName
File "<stdin>", line 9, in setName
File "<stdin>", line 8, in setName
RuntimeError: maximum recursion depth exceeded while calling a Python object
为何无法实例化?我们来分析执行过程,
解释器对这个指令x=Person("bob") 的第一个步骤是执行初始化
def __init__(self, name):
self._name = name
由于有_name = property(getName, setName, delName, "name property docs") 这个定义,self._name = name触发setName ,
此时 def setName(self, value):
print('change...')
self._name = value
这里有点想不通了,请指点一下,多谈谈机理。
self._name = ...反过来又触发 setName,死循环了。
name = property(getName, setName, delName, "name property docs")
不要用_name 美女一点,我通了,谢谢
页:
[1]