QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

鱼友Ⅰ

Rank: 2Rank: 2

积分
146
查看: 143|回复: 5

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

[复制链接]
最佳答案
4 
累计签到:48 天
连续签到:1 天
铁岭小刚fishc 发表于 2018-5-13 20:20:32 1435 | 显示全部楼层 |阅读模式
5鱼币
各位好  帮我分析下,看我理解的对不对 如果不对请指点  
如图
  1. class Nint(int):
  2.     def __rsub__(self, other):
  3.         return int.__sub__(self, other)

  4. >>> a = Nint(5)
  5. >>> 3 - a
  6. 2
复制代码

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

楼层
跳转到指定楼层
最佳答案
10 
累计签到:144 天
连续签到:1 天
Hacker_Jack 发表于 2018-5-13 20:34:38 | 显示全部楼层
本帖最后由 Hacker_Jack 于 2018-5-13 20:36 编辑

在这里a是Nint的一个实例对象,所以调用它自身的 __rsub__(self, other)后,self应该为对象a,这个对象也与return语句中的self是一个东西,楼主理解的并没有问题。因为a在你的代码里是作为被减数(正常数学中的被减数,不是指上述代码中的顺序)存在的,你在IDLE中试着调用任意整型对象的__sub__(self, other)方法,可以很容易得出self就是被减数。所以楼主的理解我认为没有什么问题,如果有错,请楼下纠正吧。
最佳答案
4 
累计签到:48 天
连续签到:1 天
铁岭小刚fishc  楼主| 发表于 2018-5-13 20:39:32 | 显示全部楼层
Hacker_Jack 发表于 2018-5-13 20:34
在这里a是Nint的一个实例对象,所以调用它自身的 __rsub__(self, other)后,self应该为对象a,这个对象也与 ...

好的 谢谢
最佳答案
4 
累计签到:48 天
连续签到:1 天
铁岭小刚fishc  楼主| 发表于 2018-5-14 10:04:28 | 显示全部楼层
有不同见解么 顶一下
最佳答案
5 

尚未签到

咕咕鸡鸽鸽 发表于 3 天前 | 显示全部楼层
是的,self必然指的是实例对象,反运算的other是非实例对象,因而a=5,other=3,5-3=2
最佳答案
222 
累计签到:99 天
连续签到:31 天
塔利班 发表于 3 天前 | 显示全部楼层
可以

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-5-25 07:39

快速回复 返回顶部 返回列表