Python 如何知道使用属性调用 setter/getter 方法



我的代码:

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.valueinstance.value = x将致电.get_value().set_value().

相关内容

  • 没有找到相关文章

最新更新