关于python的反运算问题
先定义如下的类,class Nint(int):
def __raddr__(self,other):
return int.__sub__(self,other)
a = Nint(3)
a
3
b = Nint(5)
b
5
a + b
8
1 + b
6
1+b
6
当执行”1 + b“的时候结果应该为4 才对, 为何结果是6呢?
def __raddr__ 此处定义的有错误, 应该定义为”__radd__“才对 这是因为你在类中写了一个名称错误的反运算函数 `__raddr__`,导致这个方法没有被调用。Python 其实在做 `1 + b` 运算时使用了普通的加法运算符 `+`,而不是你想要的反加法运算。
在 Python 中,加法的反运算函数应该是 `__radd__` 而不是 `__raddr__`。所以你需要将方法定义为:
class Nint(int):
def __radd__(self, other):
return int.__sub__(self, other)
这样,当执行 `1 + b` 时,就会调用 `__radd__` 方法,结果会变为 `4`。另外,请确认 `__sub__` 的使用是否正确无误,以确保你实际想要的行为。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 1 + b 执行的是 1 的 __add__,整数是 int 对象。
页:
[1]