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

标签 python class operator-overloading

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

相关文章:

python - python/numpy中的数据压缩

javascript - 如何在类构造函数中实现 'tracking' 对象?

c++ - 隐式定义的用户转换运算符支持的操作

c++ - 在c++中重载运算符+以添加两个数组

operator-overloading - 在 D 中重载 bool 运算符

python - 循环内的标签和着色图 - matplotlib

python - 将数据框中的行的一部分向右移动?

python - 无法使用 urllib2 从 Web 保存图像

c++ - 未调用虚拟方法

java - Java声音文件未播放