1>继承的概念
引入:先定义了一个类A,然后又想新建立另外一个类B,但是类B的大部分内容与类A是相同的,
我们不可能从新再写一个类B,这就用到了类的继承的概念。
通过继承的方式新建类B,让B继承A,B会‘遗传’A的所有属性(数据属性和函数属性),
概念:继承是指类与类之间的关系,是一种创建新类的方式,新建的类可以继承一个或多个父类(也叫基类或者超类),
新建的类叫子类或者派生类。继承的功能之一就是用来解决代码重用的问题
如果没有指定基类,python的类会默认继承object类,object是所有python类的基类,它提供了一些常见方法
(如__str__)的实现。
2>抽象的概念
抽取对象或者类之间比较相似的部分,它的主要作用是划分类别,抽象只是分析的过程中得到类的一个动作。先经历抽象
这个过程,才能通过继承的方式去表达出抽象的结构。
如,人,狗,猫可以抽象出动物,花草,树木可以抽象出植物,动物和植物可以抽象出生物,类似这些。
3>代码重用
用已经有的类建立一个新的类,这样就重用了已经有的软件中的一部分设置大部分,大大节省了编程工作量,这就是常说
的代码重用,不仅可以重用自己的类,也可以继承别人的,比如标准库,来定制新的数据类型。
4>属性查找顺序(单继承)
python中有单继承 和多继承
属性(类包含数据属性和函数属性)查找顺序:对象自身(应该就是__init__下面的数据)-->类(找不到就找对应的类的)
-->父类(再找不到就往父类这样层级往上找,找不到则抛出异常)
注意下面这种的情况,谨记:谁调用函数,谁就是self,再按属性查找顺序推导。
5>派生
子类添加自己新的属性或者在自己这里重新定义这些属性(不会影响到父类)成为派生,若重新定义的属性与父类重名,
那下次调用该属性时,优先调取自己的,即遵循上面说的 属性查找顺序。
6>属性查找顺序(多继承)---广度优先
7>子类中调用父类属性
7.1:父类名。父类方法
7.2:super()----注意区分跟上面的写法
7.3 区别:类.方法 不依赖继承关系,因为这种方式可以调用任何类下的方法
super依赖继承关系,并且会按mro()方式依次查找属性