我的代码:
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
- 实例时,我不对类变量做任何事情。希望你知道我的意思。
答案 0 :(得分:0)
通过执行value = property(get_value, set_value)
,您声明了一个新的描述符。从现在起instance.value
和instance.value = x
会调用.get_value()
和.set_value()
。