类的继承(单继承和多继承)


继承是一种类间关系,描述一个类从另一个类中获取成员信息的类间关系。

继承必定发生在两个类之间,参与继承关系的双方成员是父类子类

语法:class 类名(父类名)

子类可以继承父类的所有属性和方法,就算自己没有,也可以使用父类的。 在这里插入图片描述

  • 继承的传递性 在这里插入图片描述

继承的分类

单继承:子类只继承一个父类

多继承:有两个父类的属性和方法,如果两个父类具有同名的方法的时候,调用就近原则

多继承

定义格式:

             class 类名 (父类名1,父类名2,...):  

                            pass

在这里插入图片描述

查看方法搜索顺序

python中内置属性__mro__,可以查看方法搜索顺序,确定子类调用的方法顺序。 在这里插入图片描述

总结

  • 多继承有同名方法时,在搜索方法时,会先按照mro的输出结果,从左往右的顺序查找
  • 如果当前类的方法中找到了,就直接执行,不再搜索
  • 如果找到最后一个类,还没有找到方法,程序报错

继承重写


如果从父类继承的方法不能满足子类的需求,可以在子类中重写父类的方法,这个过程称为方法的覆盖),也称为方法的重写。

覆盖父类的方法

在子类中定义一个跟父类同名的方法,会调用子类重写的方法。 在这里插入图片描述

在父类的方法后增加新的内容

第一种:父类.方法名(self)

在这里插入图片描述

第二种:super().方法名() (常用)

python中super是一种特殊的类,super()是使用super类创建出来的对象,可以去调用父类中的方法。 在这里插入图片描述

类的新式写法

class 类名:

class 类名():

class 类名(object): ——>(新式写法)

以上三种写法并无区别,推荐使用新式写法,其中object是python中为所有对象提供的基类,里面提供了一些内置的属性和方法。