第二个3 + a 结果为什么不是2 而是8(未Restart shell)
class Nint(int):def __radd__(self, other):
return int.__sub__(self,other)
a = Nint(5)
3 + a
class Nint(int):
def __rsub__(self, other):
return int.__sub__(self,other)
a = Nint(5)
3 + a
__rsub__ 是当只有左边对象不允许操作时,自动调用这个方法
而你第二个继承了 int ,没有重写 __radd__ ,而只重写了 __rsub__ 那么就只有反减法的运算符
但是你测试对象是 3 + a 是加法运算符,所以不会调用 __rsub__,调用的是 __radd__
测试对象改成 3 - a 就会发现结果是 2 ,不是-2 了
页:
[1]