下面两段代码的执行结果该怎么理解,请大神帮忙分析下!
1、代码:class Nint(int):
def __radd__(self,other):
return int.__sub__(other,self)
a = Nint(5)
b = Nint(8)
执行结果:
>>> a+b
13
>>> 1+b
-7
2、代码:
class Nint(int):
def __rsub__(self,other):
return int.__sub__(self,other)
执行结果:
>>> a = Nint(5)
>>> 3-a
2 >>> a+b #a和b都是Nint,有继承int的__add__,所以就是数字相加
13
>>> 1+b #1的int没有和Nint的__add__,改用Nint的__radd__即减法。
-7
>>> a = Nint(5)
>>> 3-a #同上需要a的__rsub__,从程序看就是int的__sub__,但是self是5,other是3,即5-3
2
ba21 发表于 2017-8-27 21:14
第一个问题中,a+b调用的是add()方法,但是return 返回的是sub()方法,这个不是应该执行减法吗?
第二个问题中,1-a为什么调用的是radd()方法呀?
页:
[1]