zoukankan      html  css  js  c++  java
  • 继承与派生

    继承

    1.什么是继承?

      在程序中继承是一种新建子类的方式 新创建的类称之为之类派生类 被继承的类称之为父类基类超类

    2.为何要用继承?

      减少类与类之间代码冗余的问题

    3.如何继承?

      先抽象再继承

    python中继承的特点分为单继承和多继承

    class Parent:
        pass
    
    class Parent2:
        pass
       
    class Sub1(Parent):
        pass
        #单继承
    
    class Sub2(Parent,Parent2):
        pass
        #多继承

    python2和python3在继承上的区别

    新式类:但凡继承object类的子类,以及该子类的子子类....都称为新式类

    经典类:没有继承object类的子类,以及该子类的子子类....都称为经典类

    只有python2中才区分新式类与经典类

    派生

    在子类派生出的新功能中如何重用父类的功能:

    方式一:指名道姓地访问某一个类中的函数 与继承无关

    class People:
        def __init__(self,name,age):
            self.name=name
            self.age = age
    
    class Student(People):
        def __init__(self,name,age,num):
            People.__init__(self,name,age)
            self.num = num

    方式二:super 在python3中super不传参数,调用该函数会得到一个特殊的对象,该对象是专门用来访问父类中的属性的

        强调:super会严格参照类的mro列表依次查找属性

    class People:
        def __init__(self,age,name):
            self.age=age
            self.name=name
        
    class Teacher(People):
        def __init__(self,age,name,salary):
            super(Teacher,self).__init__(age,name)
            self.salary = salary

    属性的查找:

    1.在单继承背景中,无论是新式类还是经典类属性查找顺序都一样

    先obj->类->父类......

    2.在多继承背景下,如果一个子类继承了多个分支,但是多个分支没有汇聚到一个非object类,无论是新式类还是经典类属性查找顺序都一样

    会按照从左到右的顺序一个分支一个分支的查找下去

    3.在多继承背景下,如果一个子类继承了多个分支,但是多个分支最终汇聚到一个非object类

    新式类:广度优先查找

    经典类:深度优先查找

  • 相关阅读:
    JS加密库
    异常处理
    uva 10673 Play with Floor and Ceil
    执⾏ Python 程序的三种⽅式----pycharm安装
    第⼀个 Python 程序
    认识 Python
    svg的使用
    elementUI中el-image显示不出来图片?img与el-image的区别
    类型转化与变量
    liunx
  • 原文地址:https://www.cnblogs.com/xiamenghan/p/9839381.html
Copyright © 2011-2022 走看看