【问题标题】:python: selectively override __getattr__python:选择性地覆盖 __getattr__
【发布时间】:2017-08-01 16:47:28
【问题描述】:

我已经成功地覆盖了__getattr__ 方法以允许复杂的行为。但是,我仍然希望将某些 __builtin__ 函数设为默认值。例如,我使用__getattr__处理__add____sub____mul__等。但是,__iadd____isub____imul__等正在尝试使用__getattr__方法并抛出错误。我也可以定义它们的行为,但我认为允许这些方法默认运行会更好。

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

【问题讨论】:

  • 那么,您有一个带有自定义__getattr__ 方法的类?一些具有预期结果的简单示例代码会很有帮助,因为它似乎并不完全清楚您在寻找什么。

标签: python function methods getattr


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多