我的代码:
class MyClass:
def __init__(self):
self.value = 0
def set_value(self, value):
self.value = 5
def get_value(self):
return self.value
value = property(get_value, set_value)
a = MyClass()
我得到以下输出:
RecursionError: maximum recursion depth exceeded
我的问题:为什么我会得到这个输出?为什么 Python 调用MyClass.value.__set__而不是仅将实例变量设置为 0?
我的意思是属性对象是一个类变量,在初始化a
-instance 时,我不对类变量做任何事情。希望你明白我的意思。
通过执行value = property(get_value, set_value)
声明一个新的描述符。从现在开始,instance.value
和instance.value = x
将致电.get_value()
和.set_value()
.