您现在的位置: 主页 > 上位机技术 > python > Python中既然可以直接通过父类名调用父类方法为什么还会存在supe
本文所属标签:
为本文创立个标签吧:

Python中既然可以直接通过父类名调用父类方法为什么还会存在supe

来源:网络整理 网络用户发布,如有版权联系网管删除 2018-08-13 

super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。

总之前人留下的经验就是:保持一致性。要不全部用类名调用父类,要不就全部用 super,不要一半一半。

如果没有复杂的继承结构,super 作用不大。而复杂的继承结构本身就是不良设计。对于多重继承的用法,现在比较推崇 Mixin 的方式,也就是

  • 普通类多重继承只能有一个普通父类和若干个 Mixin 类(保持主干单一)
  • Mixin 类不能继承普通类(避免钻石继承)
  • Mixin 类应该单一职责(参考 Java 的 interface 设计,Mixin 和此极其相似,只不过附带实现而已)
如果按照上述标准,只使用 Mixin 形式的多继承,那么不会有钻石继承带来的重复方法调用,也不会有复杂的查找顺序 此时 super 是可以有无的了,用不用全看个人喜好,只是记得千万别和类名调用的方式混用就好。

              查看评论 回复



嵌入式交流网主页 > 上位机技术 > python > Python中既然可以直接通过父类名调用父类方法为什么还会存在supe
 使用 继承 调用

"Python中既然可以直接通过父类名调用父类方法为什么还会存在supe"的相关文章

网站地图

围观()