仅当属性不存在时__setattr__

时间:2011-06-28 16:46:52

标签: python

如果一个覆盖了类中的魔术方法__getattr__,则只有在找不到该属性时才会调用重写方法,否则会发生默认行为。

__setattr__似乎并非如此,它会影响所有属性。

我正在寻找的是属性存在时正常运行的东西,并且当属性不存在时遵循一些自定义代码。如何在super上致电__setattr__

2 个答案:

答案 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)