zoukankan      html  css  js  c++  java
  • 面向对象之继承

    一、何为继承?

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

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

    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__)的实现

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

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

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

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

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

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

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

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

  • 相关阅读:
    c++ 虚继承与继承的差异 (转)
    主题:PageRank解释
    (转)开源爬虫larbin分析
    Django随笔
    原生爬虫小Demo
    SVN
    Python的正则表达式与JSON
    类库 方法 模块等
    笔记
    自动补全Typeahead
  • 原文地址:https://www.cnblogs.com/zhangzhechun/p/10459502.html
Copyright © 2011-2022 走看看