def __init__(self,paizi,xiaohao,year,lz,x):
Car.__init__(self,paizi,xiaohao,year)
Lunzi.__init__(self,lz)
self.x=x
a=jc('111','111',111,111,111)
print(a.paizi)
单继承:一个派生类的基类只有一个多继承:一个派生类的基类有多个
一句话区分就是:单继承是一个生一个,多继承是多个生一个
多继承的基本语法:
子类定义构造方法时,需要将父类的构造方法调用一次。
案例演示:
在多继承中,所有基类的方法可以直接继承,但是属性需要手工初始化。如果派生类中没有 __init__ 方法,则默认获得第一个类的属性。如果派生类中有 __init__ 方法,则所有基类的属性都不会获得,需要手动逐一初始化。
我们定义一个ChineseStudent类,其继承关系如下:
调用基类的属性和方法
在不同的基类中存在相同的方法,派生类对象调用方法时会调用哪个父类的方法呢?
默认情况下,如果多个基类中有相同的方法,越在前面,优先级越高。
为了避免后期没必要的错误,建议基类之间存在重名的属性和方法应该尽量避免。
MRO(Method Resolution Order)方法解析顺序
如果是经典类(旧式类),MRO的方法--DFS(深度优先搜索)策略
如果是新式类,MRO的方法--BFS(广度优先搜索)策略