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

时间:2017-08-27 22:01:57

标签: python

我的代码:

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 - 实例时,我不对类变量做任何事情。希望你知道我的意思。

1 个答案:

答案 0 :(得分:0)

通过执行value = property(get_value, set_value),您声明了一个新的描述符。从现在起instance.valueinstance.value = x会调用.get_value().set_value()