【发布时间】:2021-05-08 22:11:05
【问题描述】:
class Test():
def __init__(self,age):
self.age=age
def __getattribute__(self,attribute):
print("Initializing getattribute")
return 6
def __setattr__(self,attribute,value):
print("Initializing setattr")
return object.__setattr__(self,attribute,value)
test=Test(4)
test.age
print(test.age)
从上面的代码结果是:
Initializing setattr
Initializing getattribute
Initializing getattribute
6
我知道每个 dunder 方法在哪里被调用,但它们真正做了什么?在前面的示例中,getattribute 指示属性值以及如果我删除该行:
return object.__setattr__(self,attribute,value)
没有任何变化。
那么__setattr__ 做了什么?
【问题讨论】: