QQ登录

只需一步,快速开始

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

主题

帖子

荣誉

VIP至尊会员

Rank: 15Rank: 15Rank: 15

积分
92
查看: 151|回复: 6

43讲关于python反运算的

[复制链接]
最佳答案
0 
累计签到:71 天
连续签到:5 天
开个丸笑 发表于 2018-2-5 15:53:36 1516 | 显示全部楼层 |阅读模式
10鱼币
小甲鱼的例子是
class Nint(int):
        def __radd__(self,other):
                return int.__sub__(self,other)

a=Nint(4)
1+a得到的结果是3
但是按照我的理解1应该是int类的一个实例对象啊,1+a可以调用1这个对象的add方法的啊

楼层
跳转到指定楼层
最佳答案
682 
累计签到:252 天
连续签到:5 天
BngThea 发表于 2018-2-5 16:03:38 From FishC Mobile | 显示全部楼层
自定义的类方法操作优先级高于系统常量的方法
最佳答案
0 
累计签到:71 天
连续签到:5 天
开个丸笑  楼主| 发表于 2018-2-5 16:18:29 | 显示全部楼层
BngThea 发表于 2018-2-5 16:03
自定义的类方法操作优先级高于系统常量的方法

可是按照python无处不对象的观点,1应该是int类的一个实例对象啊
最佳答案
146 
累计签到:96 天
连续签到:66 天
°蓝鲤歌蓝 发表于 2018-2-5 16:26:27 | 显示全部楼层
1 的确是 int 的一个实例对象,按照楼上的说法,自定义的类方法优先级比int的方法要高,所以会先去调用自定义类
中的方法,没有再调用 int 里的方法。
最佳答案
0 
累计签到:71 天
连续签到:5 天
开个丸笑  楼主| 发表于 2018-2-5 16:44:37 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-2-5 16:26
1 的确是 int 的一个实例对象,按照楼上的说法,自定义的类方法优先级比int的方法要高,所以会先去调用自定 ...

能不能说的稍微详细与规范一点点,有点感觉了谢谢了
最佳答案
146 
累计签到:96 天
连续签到:66 天
°蓝鲤歌蓝 发表于 2018-2-5 16:48:37 | 显示全部楼层
开个丸笑 发表于 2018-2-5 16:44
能不能说的稍微详细与规范一点点,有点感觉了谢谢了

你 1 是 int类型的, int是系统内部函数, a 是由你自定义也就是你自己后来写的类实例化的一个对象,所以进行
1 + a 时,由于自定义方法的优先级高,系统会优先去 a 里面找有没有__radd__() 方法,有的话就调用,你这里的 a 是由的,所以
1 + a 这个 + 号调用的是 a 里的那个方法。如果没有,就会调用 1 里面的 __add()__方法了。大概意思就是这样。
最佳答案
682 
累计签到:252 天
连续签到:5 天
BngThea 发表于 2018-2-5 20:03:28 From FishC Mobile | 显示全部楼层
开个丸笑 发表于 2018-2-5 16:18
可是按照python无处不对象的观点,1应该是int类的一个实例对象啊

类方法调用顺序上变量的优先级高于常量

发表回复

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

本版积分规则

关闭

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

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

小黑屋|手机版|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-2-26 11:37

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