• 面向对象之继承


    一、何为继承?

    继承是一种创建新类的方式,新建的类可以继承一个或者多个父类。父类也可以叫做基类或者超类,新建的类称为派生类或者子类。

    子类会遗传父类的属性,所谓继承就是为了解决代码重用问题(解决了代码冗余问题)

    class ParentClass1:#定义父类

      pass 

    class ParentClass1:定义父类

      pass

    class SubClass1:(ParentClass1):#单继承,父类为ParentClass1,子类是SubClass1

      pass

    class SubClass1:(ParentClass1,ParentClass2):#多继承,逗号分隔开多个继承的类

      pass

    查看继承:

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

    (<class '__main__.ParentClass1'>,)

    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类的基类,它提供了一些常见方法(如__str__)的实现

     三、继承与抽象(先抽象再继承)

    继承描述的是子类与父类之间的关系,如果要描述这层关系,就必须先继承再抽象。

    抽象就是抽取类似或者比较像的部分

    抽象最主要的作用就是划分类别,这一点可以 隔离关注点,降低复杂度

    继承:继承是基于抽象的结果。(没有抽象就没有继承),我们通过抽象可以得到类

    如果继承关系时菱形结构时,那么属性的查找方式为两种,分别是深度优先和广度优先

    当类是经典类时,多继承情况下,在要查找属性不存在时,会按照深度优先去查找

    当类是新式类时,多继承情况下,在要查找的属性不存在时,会按照广度优先去查找 

  • 相关阅读:
    markdown===在新窗口中打开网址的解决办法,以及其他遗留问题!
    关于比特币
    给windows设置隐藏文件夹的方法
    python实战===百度文字识别sdk
    python实战===用python对比两张图片的不同
    python基础===python os.path模块
    python实战===爬取所有微信好友的信息
    python基础===Sublime Text 3 快捷键
    python实战===一键刷屏
    linux===进程操作
  • 原文地址:https://www.cnblogs.com/zhangzhechun/p/10459502.html
Copyright © 2020-2023  润新知