如何在没有类的情况下覆盖当前脚本的魔术方法?

时间:2018-02-10 15:04:44

标签: python override method-overriding magic-methods

如何覆盖当前脚本的魔术方法?

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__,但他们不会。我错过了什么?

1 个答案:

答案 0 :(得分:2)

__setattr__ 适用于a.b = c形式的作业,转换为type(a).__setattr__(b, c)。简单的名称赋值是语言本身的基本操作,不是通过任何魔术方法实现的。

您只是定义名为__setattr__的模块级函数,而不是任何特定类的魔术方法。