继承是一种新建类的方式,新建的类称为子类,被继承的类成为父类
继承的特性:子类会遗传父类的所有属性
继承是类和类的关系
为什么是使用继承
使用继承可以减少代码的冗余
对象的继承
python中支持一个类同时继承多个父类
__bases__方法可以获取对象继承的类
继承与抽象
继承是子类与父类之间的关系,要找出这种关系,就要先抽象在继承
对象查找属性的顺序:对象自己--》对象的类--》父类--》父类
类的派生
子类除了继承父类之外还有属于自己的新定义的属性的过程就做派生
派生方法一:
-
指名道姓访问某一个类的函数,该方式与继承无关
-
严格以来继承属性查找关系
-
supper()会得到一个特殊对象,该对象就是专门用来访问父类中的属性
-
super().__init__(不用为self传值)
-
super的完整用法是super(自己的类名,self),在PYthon3中直接简写super()
类的组合
组合就是一个类的对象具有某种属性,该属性的值是指向另外一个类的对象
如何使用组合
-
需求:假如我们需要给学生增添课程属性,但是又不是所有的老男孩学生一进学校就有课程属性,课程属性是学生来老男孩后选出来的,也就是说课程需要后期学生们添加进去的
-
实现思路:如果我们直接在学生中添加课程属性,那么学生刚被定义就需要添加课程属性,这就不符合我们的要求,因此我们可以使用组合能让学生未来添加课程属性
菱形继承
新式类
继承了object的类和该类的子类都是新式类
python3中所有的类都是新式类
广度优先
继承类
python2中有,没有继承object的类以及该类的子类
python3中没有 已被优化
深度优先
三条准则
-
子类会先于父类被检查
-
多个父类会更具他们在列表中的顺序被检查
-
如果对于下一个类存在两个合法的选择,选择第一个父类
类的多态和多态性
多态指的是一类事物有多种形态(一个抽象类有多个子类,因而多态的概念依赖于继承)
多态性是指具有不同功能的函数可以使用相同的函数,这样在就可以用一个函数名调用不同的函数
一种调用方式,不同的执行效果
多态性是一个接口的多种实现如(obj.run(),obj.talk(),obj.len())
多态性的好处
-
增加了程序的灵活性,以不变因万变,不论对象千变万化,使用者都是用同一种形式去调用
-
增加了程序的可扩展性
多态:同一种失误的多种形态
多态性:一种调用方式,不同的执行效果