UncleMonster 发表于 2020-7-21 19:24:59

求助关于反制魔法方法问题__add__ / __radd__


class Nint(int):
    def __radd__(self,oc):
      print('我被调用了')
      return int.__radd__(self,oc)

a = Nint(3)
b = Nint(4)
print(a+b)
print(1+b)
print(a+1)

关于代码里的:return int.__radd__(self,oc)
这里的__radd__不管是用add还是radd,输出结果都是一样的,请问两者有什么区别吗{:10_277:}

UncleMonster 发表于 2020-7-21 19:35:14

hello?有没有大佬帮忙讲解一下{:10_266:}

zltzlt 发表于 2020-7-21 19:47:39

这就像问你 1+3 和 3+1 有什么区别,算式的结果没区别,不过是顺序调换了一下而已。

但减法就不一样了,例如 1-3 不等于 3-1 。

UncleMonster 发表于 2020-7-21 19:48:58

zltzlt 发表于 2020-7-21 19:47
这就像问你 1+3 和 3+1 有什么区别,算式的结果没区别,不过是顺序调换了一下而已。

但减法就不一样了, ...

是return int.__radd__(self,oc)这里的__radd__我换成__add__结果也是一样的{:10_277:}

永恒的蓝色梦想 发表于 2020-7-21 20:55:28

UncleMonster 发表于 2020-7-21 19:48
是return int.__radd__(self,oc)这里的__radd__我换成__add__结果也是一样的

你听不懂话嘛{:10_277:}3L说的很清楚了

Twilight6 发表于 2020-7-21 21:26:14



int 默认 __add__ 和 __radd__ 应该都是使得两个值相加的结果吧所以你改了还是一样的效果

UncleMonster 发表于 2020-7-21 21:35:52

Twilight6 发表于 2020-7-21 21:26
int 默认 __add__ 和 __radd__ 应该都是使得两个值相加的结果吧所以你改了还是一样的效果

酱紫,感谢大佬
页: [1]
查看完整版本: 求助关于反制魔法方法问题__add__ / __radd__