python:有选择地覆盖__getattr __

时间:2017-08-01 16:47:29

标签: python function methods getattr

我已成功覆盖__getattr__方法,以便允许复杂的行为。但是我仍然希望允许某些__builtin__函数是默认的。例如,我使用__getattr__来处理__add____sub____mul__等。但是,__iadd____isub__,{{ 1}}等尝试使用__imul__方法并抛出错误。我也可以定义他们的行为,但我认为允许这些方法作为默认运行会更好。

底线:我想允许__getattr__过滤它处理的属性,以及它允许​​默认运行的属性。

1 个答案:

答案 0 :(得分:0)

回答了我自己的问题。我使用if语句来处理属性组,然后作为最后的手段,使用return getattr(my_cls_name, attr)来允许任何其他内置函数正常运行。所以现在当它意识到没有__iadd__处理程序时,它会使用我的__add__代替。与其他运营商相同。