关于魔法方法 add/radd 新人小白
本帖最后由 zltzlt 于 2020-8-17 16:40 编辑class Nint(int):
def __radd__(self,other):
return int.__sub__(self,other)
b = Nint(3)
1+b
以上代码,1+b得出2
想问的是1不是本身作为一个int就有自己的add方法吗,上面的代码也没有改变add方法,为什么要用b的radd方法去算1+b?
因为 a + b 如果 b 是 a 的子类,那么先调用 b.__radd__(a) 。
在这里 Nint 是 int 的子类,所以先调用 b.__radd__(1) zltzlt 发表于 2020-8-17 16:39
因为 a + b 如果 b 是 a 的子类,那么先调用 b.__radd__(a) 。
在这里 Nint 是 int 的子类,所以先调用...
就是说谁是子类就先调用谁的方法吗? Yakia 发表于 2020-8-17 16:45
就是说谁是子类就先调用谁的方法吗?
也可以这样理解 zltzlt 发表于 2020-8-17 16:45
也可以这样理解
谢谢谢谢!
页:
[1]