12.2.2 反运算
本帖最后由 薬薬薬加油 于 2022-5-6 15:59 编辑class Nint(int):
def __radd__(self, other):
return int.__sub__(other, self)
a = Nint(5)
b = Nint(3)
a + b# 这里返回的是5 -3 = 2
1 + b# 这里返回的是1 + 3 = 4
readd()函数返回的不是减吗,这里我得到的结果是2,而书上结果是8,有点看不懂 class Nint(int):
def __radd__(self, other):
return int.__radd__(other, self) #改了这里
a = Nint(5)
b = Nint(3)
a + b class Nint(int):
def __radd__(self, other):
return int.__sub__(other, self)
a = Nint(5)
b = Nint(3)
print(a + b)
这个代码的结果就是 8 呀,你是怎么得到的结果? isdkz 发表于 2022-5-6 15:58
这个代码的结果就是 8 呀,你是怎么得到的结果?
啊?我复制你的代码得到的结果还是2{:10_277:} 薬薬薬加油 发表于 2022-5-6 16:01
啊?我复制你的代码得到的结果还是2
你是用的 pycharm ? 薬薬薬加油 发表于 2022-5-6 16:01
啊?我复制你的代码得到的结果还是2
你重启下编辑器,然后再次运行代码,应该就没问题了
isdkz 发表于 2022-5-6 16:02
你是用的 pycharm ?
我用Pycharm试了一下确实是8,之前用的Jupyter Notebook得到的结果确实是2,这是为啥呀? Twilight6 发表于 2022-5-6 16:02
你重启下编辑器,然后再次运行代码,应该就没问题了
真的是这样,谢谢! 薬薬薬加油 发表于 2022-5-6 16:04
我用Pycharm试了一下确实是8,之前用的Jupyter Notebook得到的结果确实是2,这是为啥呀?
你运行一个 cell 就好了,是没有问题的,
可能你还执行了别的 cell 重新赋值 a 或 b 了,
python爱好者. 发表于 2022-5-6 15:58
谢谢! isdkz 发表于 2022-5-6 16:02
你是用的 pycharm ?
谢谢! 薬薬薬加油 发表于 2022-5-6 16:08
真的是这样,谢谢!
Jupyter Notebook 运行会将之前的定义保存在内存,前面调用过的代码会遗留
要完整的重新定义就可以正常执行,否则就会调用之前定义的
薬薬薬加油 发表于 2022-5-6 16:10
谢谢!
你用 jupyter 的话最好要重新执行整个代码,
因为 jupyter 你可能把执行顺序搞乱了,
可能之前定义的类已经被重新定义过了 isdkz 发表于 2022-5-6 16:12
你用 jupyter 的话最好要重新执行整个代码,
因为 jupyter 你可能把执行顺序搞乱了,
好的好的,非常感谢 Twilight6 发表于 2022-5-6 16:11
Jupyter Notebook 运行会将之前的定义保存在内存,前面调用过的代码会遗留
要完整的重新定义就可 ...
好的好的,非常感谢!
页:
[1]