Python由于具有多继承的特点,因此在使用super()方法的时候,需要考虑调用的是哪个父类的方法,这里面涉及到以下内容:
- 菱形继承(钻石集成)
- MRO(method resolution order)
下面的图像就是菱形继承。
抛开复杂的言论,简单来讲就是:
使用super方法的时候,会根据当前指定的super方法的参数到MRO中查表,然后从查找到的位置的下一个位置开始往上调用super方法。
比如上面图像的菱形继承,B和C都继承自A,而D同时继承了B和C,所以在调用D的super方法的时候会查表,具体内容可以查看下面的博客。
Python super() 详解 最简单的解释