鱼C论坛

 找回密码
 立即注册
查看: 2897|回复: 5

[已解决]小甲鱼第43课关于反运算的答案有问题吧

[复制链接]
发表于 2020-1-16 22:36:26 | 显示全部楼层 |阅读模式

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

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

x
问题 :0 a + b 若a有__add__能否调用 b的__radd__ ?小甲鱼说不能
问题:1 radd啥时候使用  小甲鱼的答案是 a的__add__无法计算时

但是我翻阅资料 解释有两个,大家看看是不是对的?首先资料我验证过没啥问题,希望大家补充一下,让我明白点。

(1)b是 a的子类 且 b有 __radd__且在类声明中有def  则b的__radd__优先于a的__add__

(2)若a 的__add__计算返回 NotImplement 则表明计算失败 如果b存在__radd__  那么会执行b的__radd__ 注意 此时a和b不能是一个类的对象
        若计算还是返回NotImplement 则显示 TypeError 当然若没有radd也会报出这个错误
最佳答案
2020-1-22 14:54:16
TJBEST 发表于 2020-1-21 20:40
小甲鱼, a + b  我试了一下 a具有add b具有radd 且b的类是a的子类 我验证了 先执行b的radd。这点zlrzlt ...


这个是特殊情况嘛,应该是我问题提问方式不对,应该说 “一般情况下,同一个对象……”


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-1-21 03:20:16 From FishC Mobile | 显示全部楼层
@小甲鱼 我验证后也是那样。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-21 09:34:09 | 显示全部楼层
zltzlt 发表于 2020-1-21 03:20
@小甲鱼 我验证后也是那样。

哇,版主大大回帖
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-21 20:04:47 | 显示全部楼层
对象相加(a + b),如果 a 对象有 __add__ 方法,请问 b 对象的 __radd__ 被调用吗?

a + b,如果 a 存在 __add__ 方法,会优先调用 a 的 __add__,就不会去调用 b 的 __radd__。

不是能不能的问题哦,能是肯定能的,就是默认不会去调用它。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-21 20:40:16 | 显示全部楼层
小甲鱼 发表于 2020-1-21 20:04
对象相加(a + b),如果 a 对象有 __add__ 方法,请问 b 对象的 __radd__ 会被调用吗?

a + b,如果 a  ...

小甲鱼, a + b  我试了一下 a具有add b具有radd 且b的类是a的子类 我验证了 先执行b的radd。这点zlrzlt也验证了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-1-22 14:54:16 | 显示全部楼层    本楼为最佳答案   
TJBEST 发表于 2020-1-21 20:40
小甲鱼, a + b  我试了一下 a具有add b具有radd 且b的类是a的子类 我验证了 先执行b的radd。这点zlrzlt ...


这个是特殊情况嘛,应该是我问题提问方式不对,应该说 “一般情况下,同一个对象……”


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-2 04:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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