关于砖石继承问题
钻石继承(菱形继承)会带来什么问题?
多重继承容易导致钻石继承(菱形继承)问题,上边代码实例化 D 类后我们发现 A 被前后进入了两次(有童鞋说两次就两次憋,我女朋友还不止呢……)。
这有什么危害?我举个例子,假设 A 的初始化方法里有一个计数器,那这样 D 一实例化,A 的计数器就跑两次(如果遭遇多个钻石结构重叠还要更多),很明显是不符合程序设计的初衷的(程序应该可控,而不能受到继承关系影响)。
最后一个括号里的内容不理解,哪里不可控了? python3里,多重继承由python2中的深度优先,经典类和新式类统一改为广度优先。
菱形继承就会导致继承一定的先后顺序不同。
可以选择查看当前类的MRO,菱形继承还是有一定的先后顺序关系的。
本帖最后由 heidern0612 于 2020-6-9 16:07 编辑
简单说就是多重继承会导致你的程序不清晰,容易出bug。你一眼瞅不出来各种错综复杂的类继承关系,会导致你的代码不易阅读和后期维护。
如果非要多重继承的话,able了解下。
多重继承的正确使用方法:戳我前进
菱形继承弊端:给个简单的连接诶了解下:戳我前进 可以看看我的这个精华帖,Python细节之6、类的多继承中super函数的调用顺序
页:
[1]