• 继承与派生


    继承

    继承指的是类与类之间的关系,继承的功能之一就是用来解决代码重用问题

    继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可以成为基类超类,新建的类称为派生类子类

    单继承与多继承

    class ParentClass1: #定义父类
        pass
    
    class ParentClass2: #定义父类
        pass
    
    class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass
        pass
    
    class SubClass2(ParentClass1,ParentClass2): #python支持多继承,用逗号分隔开多个继承的类
        pass  
    

    查看继承

    类名.__bases__

    print(SubClass1.__bases__) #__base__只查看从左到右继承的第一个子类,__bases__则是查看所有继承的父类
    print(SubClass2.__bases__) 

       结果:

        (<class '__main__.ParentClass1'>,)
        (<class '__main__.ParentClass1'>, <class '__main__.ParentClass2'>)


     派生

      子类也可以添加自己新的属性或者在自己这里重新定义这些属性(不会影响到父类),注意:一旦重新定义了自己的属性且与父类重名,那么调用新增的属性时,就以自己为准

    在子类中,新建的重名函数属性,在编辑函数内功能时,有可能需要重用父类中的那个相同名称的函数功能,应该是用普通的调用函数的方式,即类名.func()(例如:父类.函数名())


    继承的实现原理

    遵循以下三条准则:

    1. 子类会先于父类被检查
    2. 多个父类会根据它们在列表中的顺序被检查
    3. 如果对下一个类存在两个合法的选择,选择第一个父类

    在python2中有新式类和经典类

      经典类:没有继承object的类,以及它的的子类都称之为经典类(深度优先)

      新式类:继承object的类,以及它的子类都称之为新式类 (广度优先)(print(类名.mro()))

    在python3中有只有新式类,一个类没有继承object类,默认继承object。


    子类中调用父类的方法

    在子类派生出的新的方法中重用父类方法,有两种方式:

    一、指名道姓(不依赖于继承):

      父类名.父类函数名(全部参数)

    二、super()(依赖继承):

      super(自己类名,self).(父类)函数名(参数(无需传self))#python2

      super().(父类)函数名(参数(无需传self))#python3简写

    按照mro继续往后查找,只有新式类有mro

     

  • 相关阅读:
    从头学pytorch(二十一):全连接网络dense net
    Linux环境实现python远程可视编程
    centos7安装Anaconda3
    sql语句中包含引号处理方法
    syslog 日志
    python 判断是否为中文
    numpy简介
    django之模板显示静态文件
    Linux(Ubuntu)安装libpcap
    Bug预防体系
  • 原文地址:https://www.cnblogs.com/fantsaymwq/p/9884239.html
Copyright © 2020-2023  润新知