多继承

 

 

 

一、多继承的概念

单继承:子类有一个父类

多继承:子类有多个父类。并且具有所有父类的属性和方法。【例1】

 

语法:


 

 

例1:

 

结果:

 

 

二、MRO方法搜索顺序

 

有一种情况:不同的父类中有相同的方法,那继承之后调用的哪一个呢?

首先我们要尽量避免这种情况。

 

如果实在避免不了,可以通过__mro__属性来查看调用的是哪个方法。

 

 

 

例:

 

结果:

 

执行的是A类的fun()方法。

通过C.__mro__属性,可以看到首先是按照C类、A类、B类、object类的顺序来搜索方法的。(因为先继承的A,再继承的B,所以A在前。)

 

 

 

三、新式类和旧式(经典)类

旧式类:不以object类为基类的类。

新式类:以object类为基类的类。

 

在Python2.0 中,如果指定了父类是object类,才是新式类。如果没有执行父类,那么就是旧式类。

在Python3.0中,如果没指定,默认就使用object作为基类,所以python3.0类都是新式类。