我使用python描述符模拟一些数据.
class Number:
def __init__(self):
self.num = 0
def __get__(self, instance, obj):
print("is getting number")
return self.number
def __set__(self, instance, value):
print("is setting number")
self.number = value
def __str__(self):
return str(self.number)
num = Number()
num = 2
print(num + 7)
Run Code Online (Sandbox Code Playgroud)
输出:
9
Run Code Online (Sandbox Code Playgroud)
它似乎成功地调用方法__get__和__set__,但我不知道为什么没有输出消息is getting number或is setting number.
我不确定python是否调用了描述符方法.
我的问题是什么时候会调用描述符方法?
我总结了我的起源猜测:
得到
obj.prop获取属性时,prop是另一个设置描述符的对象a + 5.如果a有描述符并将调用__get____get__get函数体,然后调用__call__运行该函数.组
obj = 5但我一定是错的,我需要有人告诉我正确的概念.