【发布时间】:2018-07-12 06:21:33
【问题描述】:
我目前正在学习 python 运算符重载(确切地说是__radd__ 和__add__),我有以下代码
class Commuter1:
def __init__(self, val):
self.val = val
def __add__(self, other):
print('add', self.val, other)
return self.val + other
def __radd__(self, other):
print('radd', self.val, other)
return other + self.val
x = Commuter1(88)
y = Commuter1(99)
print(x + y)
我得到了以下结果
单独使用时,我了解__radd__ 和__add__ 的工作原理。但是对于x + y 行,我不确定为什么会同时调用__radd__ 和__add__ 方法。
【问题讨论】:
-
你认为
self.val + other会发生什么? -
我想他已经回答了你的问题。
-
啊,我想我明白了。在
__add__函数内部,返回语句return self.val + other调用__radd__函数。return self.val + other中的other作为第一个参数传递给__radd__(即return self.val + other中的other被分配给def __radd__(self, other)中的self。而return self.val + other中的self.val被分配给def __radd__(self, other)中的other参数。我希望我做对了
标签: python operator-overloading