鱼C论坛

 找回密码
 立即注册
查看: 822|回复: 3

[已解决]关于042魔法方法:算数方法的疑问

[复制链接]
发表于 2020-2-29 08:37:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
重写魔法方法:__add__(self.other)时:

class New_int(int):
    def __add__(self,other):
        return int.__sub__(self,other)
返回的是“int.__sub__(self,other)"

我测试一些如果返回”super().__sub__(other)“也是没有问题的

关于这一点,想求助一下,
1、“int.__sub__(self,other)"的用法是什么意思?
2、int.__sub__(self,other)和super().__sub__(other)为什么使用int的时候多了一个self的参数

个人理解,int也应该是个对象,super本质上也是一个对象,调用的时候都不应该有self变量才对,希望有大神帮忙打一下,谢谢
最佳答案
2020-2-29 10:19:22
jiujiaomutou 发表于 2020-2-29 10:09
如果使用super()调用,是不需要self的,只是需要传一个其他变量。
如果super()传入self变量,反而会出问 ...

因为super会自己找到父类的方法,所以不用加self
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-29 09:47:51 | 显示全部楼层
self的用法就是用于标记和别的变量不弄混
而调用父类的魔法方法肯定也有self变量的啊,不和
你自己定义的类冲突
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-29 10:09:28 | 显示全部楼层
qiuyouzhi 发表于 2020-2-29 09:47
self的用法就是用于标记和别的变量不弄混
而调用父类的魔法方法肯定也有self变量的啊,不和
你自己定义的 ...

如果使用super()调用,是不需要self的,只是需要传一个其他变量。
如果super()传入self变量,反而会出问题。

我的疑问就在这,为啥int.__sub__(self,other)需要传入self
但是,super.__sub__(other)不需要传入self

而且这个‘int.’的用法还是感觉很奇怪
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-29 10:19:22 | 显示全部楼层    本楼为最佳答案   
jiujiaomutou 发表于 2020-2-29 10:09
如果使用super()调用,是不需要self的,只是需要传一个其他变量。
如果super()传入self变量,反而会出问 ...

因为super会自己找到父类的方法,所以不用加self
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 20:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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