鱼C论坛

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

[已解决]关于砖石继承问题

[复制链接]
发表于 2020-6-9 15:56:10 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x

钻石继承(菱形继承)会带来什么问题?

多重继承容易导致钻石继承(菱形继承)问题,上边代码实例化 D 类后我们发现 A 被前后进入了两次(有童鞋说两次就两次憋,我女朋友还不止呢……)。

这有什么危害?我举个例子,假设 A 的初始化方法里有一个计数器,那这样 D 一实例化,A 的计数器就跑两次(如果遭遇多个钻石结构重叠还要更多),很明显是不符合程序设计的初衷的(程序应该可控,而不能受到继承关系影响)。
最后一个括号里的内容不理解,哪里不可控了?
最佳答案
2020-6-9 16:04:43
本帖最后由 heidern0612 于 2020-6-9 16:07 编辑

简单说就是多重继承会导致你的程序不清晰,容易出bug。你一眼瞅不出来各种错综复杂的类继承关系,会导致你的代码不易阅读和后期维护。

如果非要多重继承的话,able了解下。


多重继承的正确使用方法:戳我前进

菱形继承弊端:给个简单的连接诶了解下:戳我前进
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-9 16:03:52 | 显示全部楼层
python3里,多重继承由python2中的深度优先,经典类和新式类统一改为广度优先。

菱形继承就会导致继承一定的先后顺序不同。

可以选择查看当前类的MRO,菱形继承还是有一定的先后顺序关系的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-9 16:04:43 | 显示全部楼层    本楼为最佳答案   
本帖最后由 heidern0612 于 2020-6-9 16:07 编辑

简单说就是多重继承会导致你的程序不清晰,容易出bug。你一眼瞅不出来各种错综复杂的类继承关系,会导致你的代码不易阅读和后期维护。

如果非要多重继承的话,able了解下。


多重继承的正确使用方法:戳我前进

菱形继承弊端:给个简单的连接诶了解下:戳我前进
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-9 16:12:11 | 显示全部楼层
可以看看我的这个精华帖,Python细节之6、类的多继承中super函数的调用顺序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 19:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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