例如,如果我在两个类中定义了 __add__ 和 __radd__ 并且我对 python 将使用哪个操作定义的两个对象求和?
请您参考如下方法:
如果左手和右手的对象不相关,则左手的对象获胜。但是,如果其中一个对象是另一个对象的子类,则无论是左手对象还是右手对象,子类都会获胜。
>>> class Foo(object):
... def __add__(self, rhs):
... print('foo.add')
... def __radd__(self, rhs):
... print('foo.radd')
...
>>> class Bar(Foo):
... def __add__(self,rhs):
... print('bar.add')
... def __radd__(self, rhs):
... print('bar.radd')
...
>>> a=Foo()
>>> b=Bar()
>>> a+b
bar.radd
>>> b+a
bar.add
>>>
