铁岭小刚fishc 发表于 2018-5-13 20:20:32

python 魔法方法-----反运算

各位好帮我分析下,看我理解的对不对 如果不对请指点
如图class Nint(int):
    def __rsub__(self, other):
      return int.__sub__(self, other)

>>> a = Nint(5)
>>> 3 - a
2
在这里def __rsub__(self, other)实例变量a 传进去是传给了self ,然后执行的时候 返回值return 执行self == a == 5
return 调用 __sub__ 魔法方法,self - 3 然后就结果就变成 2 了 ?是这样么?

Hacker_Jack 发表于 2018-5-13 20:20:33

本帖最后由 Hacker_Jack 于 2018-5-13 20:36 编辑

在这里a是Nint的一个实例对象,所以调用它自身的 __rsub__(self, other)后,self应该为对象a,这个对象也与return语句中的self是一个东西,楼主理解的并没有问题。因为a在你的代码里是作为被减数(正常数学中的被减数,不是指上述代码中的顺序)存在的,你在IDLE中试着调用任意整型对象的__sub__(self, other)方法,可以很容易得出self就是被减数。所以楼主的理解我认为没有什么问题,如果有错,请楼下纠正吧。{:10_256:}

铁岭小刚fishc 发表于 2018-5-13 20:39:32

Hacker_Jack 发表于 2018-5-13 20:34
在这里a是Nint的一个实例对象,所以调用它自身的 __rsub__(self, other)后,self应该为对象a,这个对象也与 ...

好的 谢谢

铁岭小刚fishc 发表于 2018-5-14 10:04:28

有不同见解么 顶一下

咕咕鸡鸽鸽 发表于 2018-5-22 18:17:47

是的,self必然指的是实例对象,反运算的other是非实例对象,因而a=5,other=3,5-3=2

塔利班 发表于 2018-5-22 18:32:07

可以
页: [1]
查看完整版本: python 魔法方法-----反运算