如果一个覆盖了类中的魔术方法__getattr__
,则只有在找不到该属性时才会调用重写方法,否则会发生默认行为。
但__setattr__
似乎并非如此,它会影响所有属性。
我正在寻找的是属性存在时正常运行的东西,并且当属性不存在时遵循一些自定义代码。如何在super
上致电__setattr__
?
答案 0 :(得分:4)
class ClassName(object):
def __setattr__(self, name, value)
if hasattr(self, name):
super(ClassName, self).__setattr__(name, value)
else:
magic
答案 1 :(得分:2)
您可以使用自定义__getattr__
来了解该属性是否存在。
使用默认行为设置属性you do something like:
object.__setattr__(self, name, value)