继承
1:什么是继承
继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,也就是说在python中支持一个儿子继承多个爹。
新建的类成为子类或者派生类。
父类又可以成为基类或者超类。
子类会遗传父类的属性。
2:为什么要用继承
减少代码冗余(也就是重复写代码)。
3:怎么用继承:
我们定义两个类; class parenclass1: pass class parenclass2: pass 在定义两个类: class subclass1: pass class subclass2: pass 我想让 : class parenclass1: 作为 class subclass1: 的父类。 pass pass 应该这样用: class subclass1( parenclass1): 这就表示subclass1是子类,parenclass 是subclass1 的父类 pass 两个父类的话怎么表达呢?如下: class subclass2(parenclass1,parenclass2): pass 这就表示subclass2的父类是parenclass1,parenclass2 这两个
想要查看子类的父类 应该怎样查看呢: 用__bases__ 如下:
class ParentClass1: pass class ParentClass2: pass class Subclass1(ParentClass1): pass class Subclass2(ParentClass1,ParentClass2): pass print(Subclass1.__bases__) #打印结果:(<class ‘__main__.ParentClass1‘>,) print(Subclass2.__bases__) #打印结果: (<class ‘__main__.ParentClass1‘>, <class ‘__main__.ParentClass2‘>)
经典类与新式类
1、只有在python2中才分新式类和经典类,python3中统一都是新式类 2、在python2中 没有显示继承的object类的类,以及该类的子类都是经典类 3、在python2中,显示的声明继承object的类,以及该类的子类都是新式类 4、在python3中,无论是否继承object,都默认 继承object,即python3中所有类均为新式类 至于经典类 与新式类的区别,后面会有讨论。 提示:如果没有指定基类, python的类会默认继承object类, object是所有python类的基类。
二、继承与抽象
继承描述的是子类与父类之间的关系,是一种什么的关系呢? 要找出这种关系, 必须先抽象在继承。
抽象即抽取类似或者说比较像的部分。
抽象分成两个层次:
1.将奥巴马和梅西这俩对象比较像的部分抽取成类;
2.将人,猪,狗这三个类比较像的部分抽取成父类。
抽象最主要的作用是划分类别(可以隔离关注点,降低复杂度)
继承:是基于抽象的结果,通过编程语言去实现它,肯定是先经历抽象合格过程, 才能通过继承的方式去表达抽象的结构。
抽象只是分析和设计的过程,一个动作或者说一种技巧,通过抽象可以得到类
例如:我们写一个老男孩的老师与学生的类,若是不涉及到继承的话 我们正常是这样写
class OldboyTeacher: school = ‘oldboy‘ def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex def change_score(self): print(‘teacher %s is changing score ‘ %self.name) class Oldboystudent:
school = ‘oldboy’
def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex def choose(self): print(‘student %s choose course‘ %self.name) tea1 = OldboyTeacher(‘egon‘, 18, ‘male‘) #OldboyTeacher.__init__(...) stu1=Oldboystudent(‘alex‘,73,‘female‘) print(tea1.name,tea1.age,tea1.sex) # egon 18 male print(stu1.name) #alex
但是我们经过分析 发现里面里面有许多重复代码, 这时我们可以用到类的继承来写了。如下:
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 choose course‘%self.name) tea1 = Oldboyteacher(‘egon‘, 18, ‘male‘) stu1=Oldboystudent(‘alex‘,73,‘female‘) print(tea1.name,tea1.age,tea1.sex)#egon 18 male print(stu1.name) #alex
原文地址:https://www.cnblogs.com/lx3822/p/8808845.html
时间: 2024-10-10 04:50:51