我想实现一个类,其中尝试访问当前类或其任何祖先中不存在的任何属性的尝试将试图从成员访问这些属性。以下是我正在尝试做的简单版本。为什么__getattr__不会因缺失“神奇”调用的方法而被调用?
class Foo:
def __init__(self, value):
self._value = value
def __getattr__(self, name):
return getattr(self._value, name)
if __name__ == '__main__':
print(Foo(5) > Foo(4)) # should do 5 > 4 (or (5).__gt__(4))
然而,这会产生一个TypeError
。即使使用operator
模块的attrgetter
类也会执行相同的操作。我正在看the documentation regarding customizing attribute access,但我没有觉得它很容易阅读。我怎样才能解决这个问题?
非常感谢您的简单示例 - 但是Bar的重点在哪?没有它,你的问题就没有什么不同。 –
@ ron.rothman,*耸耸肩*这是我的代码正在做的基本要点。我进一步简化了它。 :) –
此外,属性是字符串,而不是整数。你使用'Foo(5)'表示你可能混淆了这两者。 –