面向对象之继承

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中要有个文件头,不然中文无法注释)

在菱形继承的背景下,查找属性

经典类:深度优先

新式类:广度优先

原文地址:https://www.cnblogs.com/shengg/p/8807945.html