继承的相关介绍
一:继承介绍:
1:什么是继承:继承是一种新建类的方式,新建的类称之为子类/派生类,被继承的类称之为父类/基类/超类
python中继承的特点:
①子类可以遗传/重用父类的属性
②python中一个子类可以同时继承多个父类
③在继承背景下去说,python中的类分为两种:新式类 经典类
新式类:但凡继承了object的类以及该类的子类...都是新式类
在python3中一个类即便是没有显式的继承任何类,默认就继承object,即python3中所有的类都是新式类
经典类:没有继承object的类以及该类的子类...都是经典类
在python2中才区分新式类与经典类
在python2中一个类如果没有显式地继承任何类,也不会继承object
2:为何要用继承:减少类与类之间代码冗余
3:如何用继承:例:
子类如何重用父类的属性:
在子类派生的新方法中重用父类功能的方式一:
指名道姓的引用某一个类中的函数
总结:①与继承无关 ②访问的是类的函数,没有自动传值的效果
在子类派生的新方法中重用父类功能的方式二:
利用内置关键字 super() 必须在类中用
在python2中:super(自己的类名,自己的对象)
在python3中:super()
总结:① 严格依赖继承mro列表 ② 访问是绑定方法,有自动传值的效果
在继承背景下的属性查找优先级:
1:在单继承背景下的属性查找优先级: 对象-》对象的类-》父类-》父类...
2:在多继承背景下的属性查找优先级:
①如果一个子类继承多个分支(多个分支没有共同继承一个非object的类)此时属性的查找
优先级是:对象-》对象的类-》按照从左往右的顺序一个分支一个分支的找下去
②菱形继承问题:
新式类 : 广度优先查找,从左往右一个分支一个分支的查找,在最后一个分支才去查找顶级类
经典类 : 深度优先查找,从左往右一个分支一个分支的查找,在第一个分支就查找顶级类