例如,如果我在两个类中定义了 __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
>>>
关于python - 在 python 中的两个对象之间的操作中,其操作重载为优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23305630/