您还需要定义
__radd__才能使它起作用。
__radd__是 反向添加 。当Python尝试评估时,
x +y它首先尝试调用
x.__add__(y)。如果失败,则返回到
y.__radd__(x)。
这样,您仅需触摸一个班级即可覆盖加法。例如,考虑Python如何评估
0 +x。
0.__add__(x)尝试进行呼叫,但
int对您的课程一无所知。您无法很好地更改
__add__方法
int,因此需要
__radd__。我想这是依赖倒置的一种形式。
正如Steven所指出的那样,它
sum在原地运行,但从0开始。因此,第一个加法是唯一需要使用的
__radd__。作为一项不错的练习,您可以检查是否是这种情况!



