我想用自定义二元运算符实现一个类,这样
class One:
def __lt__(self,other):
return 1 < other
Python 似乎能够为 operator 自动创建反向操作>, >=, <, <=
,但是,如果我使用该getattr()
方法,NotImplemented
则会返回:
>>> a = One()
>>> a < 2
True
>>> 2 > a # Works without explicit implementation
True
# Now using the getter:
>>> getattr(a, '__lt__')(2)
True
>>> getattr(2, '__gt__')(a) # Does not work as above
NotImplemented
在这种情况下,使吸气剂也能正常工作的正确方法是什么?我知道对于其他运营商来说,都有各自的逆向魔法方法,但是上面提到的四种似乎都没有。