setattr()和object .__ setattr __()之间有什么区别?

pap*_*cut 10 python setattr

我知道你不能调用object.__setattr__没有继承的对象object,但两者之间还有什么不同吗?我正在使用Python 2.6,如果这很重要的话.

Eth*_*man 14

setattr(instance, name, value)是语法糖instance.__setattr__(name, value).

你只需要object.__setattr__(...)在类定义中调用,然后只有直接子类化object- Spam例如,如果你是继承其他东西,那么你应该super()用来获取层次结构中的下一个项目,或者调用Spam.__setattr__(...)- 这样你就可以了不要冒险丢失超类已经定义的行为,直接跳过它们object.

  • 谢谢,这解释了它.代码可能使用`object .__ setattr__`来实现跳过超类的__setattr__的确切目的. (2认同)