1.什么是继承?
继承一种新建类的方式,在python中支持一个儿子继承多个爹
新建的类叫做子类或者派生类
父类又可以称为基类或者超类
子类或‘遗传’父类的属性
2.为什么要用继承
减少代码的冗余
3.怎么用继承
‘’‘
class ParentClass1:#定义父类
pass
class ParentClass2:#定义父类
pass
class Subclass1( ParentClass1):
pass
class Subclass2(ParentClass1,class ParentClass2):
pass
2.寻找继承关系
’‘’
1.继承是类与类之间的关系,寻找这种关系需要先抽象再继承
‘’‘
class OldboyPeople:
school='oldboy'
def __init__(self,name,age,sex):
self.name=name
self.age=age
self.sex=sex
class OldboyTeacher(OldboyPeople):
def change_score(self):
print('teacher %s is changing score'%self.name)
class OldboyStudent(OldboyPeople):
def choose(self):
print('student %s is choose score'%self.name)
tea1=Oldboyteacher('egon',18,'male')#OldboyTeacher.__init__(....)
stud1=Oldboystudent('alex',33,'male')
print(test1.name,test1age,test1.sex)
3.基于继承再看属性查找
#派生:子类定义自己新的属性,如果与父类同名,以子类自己为准
4.在子类派生新方法中重用父类的功能
方式一:指名道姓的调用(其实与继承没有什么关系)
方式二:super()调用严格依赖于继承
super()的返回值是一个特殊的对象,该对象专门用来调用父类中的属性
#在Python2中需要super(自己的类名,self)
5.经典类和新生类
1️⃣新生类:
继承object的类,以及该类的子类,都是新式类
在Python3中,如果一个类没有指定的继承的父类,默认就是继承object
所以说lpython3中所有的类都是新式类
2️⃣经典类(只有在python2才区分经典类与新式类):
没有继承object的类,以及该类的子类,都是经典类
继承描述的是子类与父类之间的关系,是一种什么是什么的关系。要找出这种关系,必须先抽象再继承
抽象即抽取类似或者说比较像的部分。
抽象分成两个层次:
1.将奥巴马和梅西这俩对象比较像的部分抽取成类;
2.将人,猪,狗这三个类比较像的部分抽取成父类。
抽象最主要的作用是划分类别(可以隔离关注点,降低复杂度)
继承:是基于抽象的结果,通过编程语言去实现它,肯定是先经历抽象这个过程,才能通过继承的方式去表达出抽象的结构。
抽象只是分析和设计的过程中,一个动作或者说一种技巧,通过抽象可以得到类
6.在多继承背景下的属性查找
#coding:utf-8(在python2中要有个文件头,不然中文无法注释)
在菱形继承的背景下,查找属性
经典类:深度优先
新式类:广度优先