鱼C论坛

 找回密码
 立即注册
查看: 2859|回复: 6

[已解决]反运算的概念问题

[复制链接]
发表于 2018-4-6 16:32:16 | 显示全部楼层 |阅读模式

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

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

x
class New_int(int):
    def __radd__(self,other):
        return int.__sub__(self,other)
   

a=New_int(3)

print('a+1=%d'% int(a+1))
print('1+a=%d'% int(1+a))

上面的结果是:
#a+1=4
#1+a=2



python中的整型“1”,难道没有默认__add__方法么?


百思不得其解。。。。
最佳答案
2018-4-6 16:33:55
1当然有,但是是和同类型的相加,不是和自定义的,有自定义的自定义优先
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-4-6 16:33:55 | 显示全部楼层    本楼为最佳答案   
1当然有,但是是和同类型的相加,不是和自定义的,有自定义的自定义优先
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-6 16:38:43 | 显示全部楼层
塔利班 发表于 2018-4-6 16:33
1当然有,但是是和同类型的相加,不是和自定义的,有自定义的自定义优先

1不可以和自定义相加,但是“自定义+1”又可以么?  但是是不同类的呀?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-6 16:40:31 | 显示全部楼层
kerwin_lui 发表于 2018-4-6 16:38
1不可以和自定义相加,但是“自定义+1”又可以么?  但是是不同类的呀?

因为调用了int的方法啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-6 16:44:19 | 显示全部楼层
塔利班 发表于 2018-4-6 16:40
因为调用了int的方法啊

十分感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-30 17:10:42 | 显示全部楼层
@zltzlt  打扰您了,请问您知道为什么 1 + b 不会调用1的__add__方法,而会调用b的反运算吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-30 17:11:21 | 显示全部楼层
塔利班 发表于 2018-4-6 16:40
因为调用了int的方法啊

为什么调用int的方法便可以?each 和 other 不应该是同一个类的实例对象吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-10 05:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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