Skip to main content
 首页 » 编程设计

python之在 python 中的两个对象之间的操作中,其操作重载为优先级

2025年05月04日16linjiqin

例如,如果我在两个类中定义了 __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 
>>>