liliya 发表于 2020-4-28 19:03:03

1+b后续问题

整型+新创类实例对象=???
请看下面3个程序:
程序一:
>>> class Nint:
        def __init__(self,value,value2):
                self.value=value
                self.values=value2
        def __radd__(self,other):
                return int.__sub__(self.value,other)

>>> c=Nint(2,3)
>>> 3+c
-1
>>> 3+c
-1
>>> 2+c
0

程序二:
>>> class Nint:
        def __init__(self,value,value2):
                self.value=value
                self.values=value2
        def __radd__(self,other):
                return int.__sub__(self.value,other)

       
>>> b=Nint(5,3)
>>> 1+b
4
>>> b
<__main__.Nint object at 0x0000014B61308DC8>
>>> c=Nint(2,3)
>>> 1+b
4
>>> 2+b
3
>>> 3+b
2
>>> 4+b
1
>>> 5+b
0
程序三
>>> class Nint:
        def __init__(self,value):
                self.value=value
        def __radd__(self,other):
                return int.__sub__(self.value,other)

       
>>> b=Nint(3)
>>> 1+b
2

那这样的运算结果是什么???感觉很随机。。。。。。结果很奇怪。这样去调用了1的魔法方法去计算,那么传入的第二个参数值是啥啊?

腿短也要抖 发表于 2020-4-28 19:06:21

你好,武老板

永恒的蓝色梦想 发表于 2020-4-28 19:08:45

腿短也要抖 发表于 2020-4-28 19:06
你好,武老板

????

腿短也要抖 发表于 2020-4-28 19:10:31

永恒的蓝色梦想 发表于 2020-4-28 19:08
????

碰到熟人了,哈哈

永恒的蓝色梦想 发表于 2020-4-28 19:11:58

这样去调用了1的魔法方法去计算根本没有调用1的魔法方法

liliya 发表于 2020-4-28 19:16:20

永恒的蓝色梦想 发表于 2020-4-28 19:11
根本没有调用1的魔法方法

我刚试了一下,1好像确实没有魔法方法,那么为什么啊?你去type(1),它的类型是class int啊,那么int类型是有自己的魔法方法的啊。

永恒的蓝色梦想 发表于 2020-4-28 19:29:18

liliya 发表于 2020-4-28 19:16
我刚试了一下,1好像确实没有魔法方法,那么为什么啊?你去type(1),它的类型是class int啊,那么int类 ...

1 有魔法方法,但是没有调用
页: [1]
查看完整版本: 1+b后续问题