如何覆盖当前脚本的魔术方法?
def __setattr__(name, value):
__dict__[name] = value
print("asd")
if name == 'b':
print(__dict__[name])
if __name__ == '__main__':
a = 3
b = 4
b = 5
在上面,例如,我希望b
的分配可以调用__setattr__
,但他们不会。我错过了什么?
答案 0 :(得分:2)
__setattr__
仅适用于a.b = c
形式的作业,转换为type(a).__setattr__(b, c)
。简单的名称赋值是语言本身的基本操作,不是通过任何魔术方法实现的。
您只是定义名为__setattr__
的模块级函数,而不是任何特定类的魔术方法。