一.经典类的MRO和新式类的MRO c3算法.
二.super()。
一.经典类的MRO和新式类的MRO c3算法.
什么是MRO:解决类中的多继承,重名方法时的查找顺序
如何使用MRO:用类名.__mro__ 获取到类的MRO信息.
![](https://img2018.cnblogs.com/blog/1546669/201901/1546669-20190105212043110-1029911702.png)
MRO中的C3算法是怎么算的(无论是经典类的MRO还是新式类的MRO他们的算法都是深度优先.原因是深度优先的查找速度很快):
举例说明:
![](https://img2018.cnblogs.com/blog/1546669/201901/1546669-20190105212429344-444383535.png)
![](https://img2018.cnblogs.com/blog/1546669/201901/1546669-20190105212605750-1057320421.png)
![](https://img2018.cnblogs.com/blog/1546669/201901/1546669-20190105212624869-2017366834.png)
二.super()。
![](https://img2018.cnblogs.com/blog/1546669/201812/1546669-20181224173648051-468937390.png)
![](https://img2018.cnblogs.com/blog/1546669/201812/1546669-20181224173813318-589146261.png)
不管super()写在哪儿. 在哪儿执行. 一定先找到MRO列表. 根据MRO列表的顺序往下找. 否则一切都是错
应用场景:
![](https://img2018.cnblogs.com/blog/1546669/201901/1546669-20190105213011199-1497247955.png)
and
![](https://img2018.cnblogs.com/blog/1546669/201901/1546669-20190105213108397-2109787394.png)