一.继承
1.简述:
用来表述的是类与类之间的关系,比如A继承了B,那么A会有B已有的方法和属性。
那么A称为子类,B为父类。(父类又叫:基类)
使用继承可以不再用重复写代码的情况下,从而重复使用代码。
提高了编程效率。
2.正确使用继承思想:
1.先抽象然后再继承
2.继承已经存在的类,可拓展或是修改原始功能
3.在继承里的属性查找顺序:
对象自己的----->所在的类中----->父类----->父类的父类------->Object
4.继承语法表达:
class 类名称(父类名称): #类的内容 #在python中可以继承多个父类
5,派生
简述:
在继承中,如果子类中出现了与父类中不同的属性和方法时,那么这个子类我们称为派生类
由于子类一般都不会与父类一摸一样,所以派生类都是指的是子类。
6,覆盖
简述:
也称之为重写。当子类出现了与父类名称完全一致的属性或方法时,子类的属性和方法会覆盖父类的,也就是说当子类找同样的属性和方法时,都是找子类自己的。
7,子类中访问父类中数据的语法:
方式1: super(当前类名称,self).你要调的父类的属性或方法 方式2: super().你要调的父类的属性或方法 方式3: 类名称.你要调的父类的属性或方法(self) #方式3与继承无关
关键点:当子类继承父类后,而且覆盖了父类的__init__方法时,
必须在初始化方法的第一行调用父类的__init__方法,
并传入父类所需要的参数
二,组合
1,简述:
组合使用来描述两个对象之间的关系的,而且两个对象不是同个类型,而是对象1有对象2的关系
比如,学生这个对象有电脑这个对象。
将对象作为另一个对象的属性。
2,目的:
也是为了重用现有代码
相对继承来说,偶合度降低
三,菱形继承
1.新式类
任何显式或隐式的继承自己对象的类就称之为新式类。
在python3中全都是新式类
当出现了菱形继承时,在新式类里查找顺序,先深度,当遇到了共同的父类时,再广度找。
如下图:
情况一:当有共同父类时:
情况二:当有个没有共同父类时:
2.经典类
不是对象的子类,仅在python2中出现
当出现了菱形继承时,深度就是优先的查找顺序。
原文地址:https://www.cnblogs.com/wujc3/p/11246873.html