【发布时间】:2018-07-06 09:56:46
【问题描述】:
我正在测试在 OOP 中使用 @property 的想法:
class Person(object):
@property
def name(self):
return self.name
@name.setter
def name(self, newname):
self.name = newname
james = Person()
james.name = 'James Bond'
print(james.name)
>>> RecursionError: maximum recursion depth exceeded
不知何故,这给了我一个递归错误??
但如果我将self.name 更改为self._name,似乎可以解决问题。所以我想我在使用name() 作为@property 时不能设置self.name?
【问题讨论】:
-
描述符协议的重点是
obj.x调用x.__get__。