super函数主要用来解决多继承,多继承就是一个子类继承多个父类。比如狗即继承哺乳类,又继承宠物类,如果再继承一个动物类,组成层级就是钻石继承啦,super主要是用来解决钻石继承,和c++用虚拟函数不同,它用一个叫mro的概念
>>> Leaf.mro()
[<class '__main__.Leaf'>, <class '__main__.Medium1'>, <class '__main__.Medium2'>, <class '__main__.Base'>, <type 'object'>]
[具体说明](https://www.cnblogs.com/testview/p/4651198.html)
super(Leaf, self).init()的意思是说:
获取self所属类的mro, 也就是[Leaf, Medium1, Medium2, Base]
从mro中Leaf右边的一个类开始,依次寻找__init__函数。这里是从Medium1开始寻找
一旦找到,就把找到的__init__函数绑定到self对象,并返回