魔法方法的 __add__(self, other) 实现过程求助!
a+b要怎样理解是什么意思?
a+b就是a.__add__(b)啊 你的理解是对的。
int.__sub__(self,other)就是调用int的__sub__函数。
a和b是New_int类的对象,在该类中对运算符+和-进行了重载,
执行a+b 时,就会调用该类中重载的__add__函数,
__add__函数中调用了int类的int.__sub__函数,并将其返回值作为此函数的返回值
相当于以下写法
def __add__(self,other):
c=int.__sub__(self,other)
return c int.__sub__() 就是调用 int 类的减法操作,第一个参数是被减数,第二个参数是减数
在这里 self 是被减数,other 是减数 a+b先尝试调用a的add方法,a传入self,b传入other,返回的是父类int的sub方法,于是返回int__sub__(a,b),就是a-b 永恒的蓝色梦想 发表于 2020-3-25 17:15
a+b要怎样理解是什么意思?
a+b就是a.__add__(b)啊
a+b 不是会调用到 def __add__(self, other) 这个函数吗。但是返回值设置的是int.__sub__(self, other) , 结果就变成了a-b,但是这个过程该怎么解释呢,就像数学题,知道答案,但是过程不知道怎么算的,我就是想知道这个过程该是怎么做到的! class Myint:
def __init__(self, number):
self.number = number
def __add__(self, other):
return self.number + other.number
a = Myint(5)
b = Myint(6)
print(a+b) sunrise085 发表于 2020-3-25 17:23
你的理解是对的。
int.__sub__(self,other)就是调用int的__sub__函数。
谢谢你的回答很专业,不过有一点可能我是刚学习Python所有有很多还是不懂得,一开始我看不懂int类的__sub__函数代表的是什么意思,刚刚看了int类的__sub__(self, other)方法,他的返回值是self-other,看了这个突然觉就醒悟过来了!感谢指点! zltzlt 发表于 2020-3-25 17:23
int.__sub__() 就是调用 int 类的减法操作,第一个参数是被减数,第二个参数是减数
在这里 self 是被减 ...
感谢指导,现在理解了! flamezyy 发表于 2020-3-25 17:24
a+b先尝试调用a的add方法,a传入self,b传入other,返回的是父类int的sub方法,于是返回int__sub__(a,b),就 ...
感谢指导,现在理解了! lzone 发表于 2020-3-25 17:30
a+b 不是会调用到 def __add__(self, other) 这个函数吗。但是返回值设置的是int.__sub__(self, other) , ...
你现在重写的是不可变int这个类的方法。
通过自定义的方法把加定义为减、减定义为加。
a实例后传入的就是3的值,也就是a就是类定义中的self自己,b就是other了。
同理,b实例后,5就是你传入的self实例值,other就是a了。
求a+b。就相当于a实例3后减了other的b的实例5,结果为-2.
如果求得是b+a的话,b就是self,a就是other,结果就反过来为2了。
heidern0612 发表于 2020-3-25 17:58
你现在重写的是不可变int这个类的方法。
通过自定义的方法把加定义为减、减定义为加。
看懂了,感谢!
页:
[1]