• 面向对象编程(二)


    继承

    继承

    继承是一种新建类的方法,新建的类称之为子类或派生类,继承的父类称之为基类或超类

    --在python中,一个类可以继承多个父类
    --在其他语言中,一个类只能继承一个父类
    

    继承的作用

    减少代码冗余()

    继承的实现

    先抽象再继承:

    抽取对象之间相似的部分,总结出类

    抽取类之间相同的部分,总结出父类

    --在定义类子类时; class 子类名(父类名)
    

    继承背景下对象属性的查找顺序

    对象属性的查找顺序:

    1. 先从对象自己的名称空间中查找.
    2. 对象中没有,从子类的名称空间中查找.
    3. 子类中没有,从父类的名称空间中查找,若父类没有,则会报错.

    ps:程序的执行顺序是由上到下的,父类必须定义在子类的上方.

    派生

    派生:

    ​ 指的是子类继承父类的属性与方法,并且派生出自己独有的属性与方法.若子类中的方法与父类的相同,优先用子类的

    子类继承父类并重用父类的属性与方法问题

    问题: 子类重写父类的–init–导致代码更加冗余

    方法: 1.直接引用父类的–init–为其传参,并添加子类的属性.

    ​ 2.通过super来指向父类的属性. -super()是一个特殊的类,调用super得到一个对象,该对象指向父类的名称空间.

    注意:两种方式都可以使用,但不能混合在一起使用

    经典类新式类

    新式类: 继承object都是新式类,python3里面都是新式类,默认继承object

    经典类: 经典类只有在python2中才会存在,凡是没有继承object的都是经典类

    super方法

    super的继承顺序严格遵循mro继承序列,多继承情况下,从左到右.

    在python3中提供了一个新式类查找顺序的内置方法.mro()会把当前类的继承关系列出来.然后按照mro列表的 顺序往后查找.

    砖石继承(菱形继承)

    mro 的查找顺序:

    新式类: 广度优先 从左往右依次查找,查找到最后一个类时,会继续往后面的继承查找.

    经典类: 深度优先 从左往右查找,会直接查找至最后一个类

    在这里插入图片描述

    我把月亮戳到天上 天就是我的 我把脚踩入地里 地就是我的 我亲吻你 你就是我的
  • 相关阅读:
    Django修改数据库时出错 django.db.utils.OperationalError: (1091, "Can't DROP 'content'; check that column/key exists")
    ini配置文件必知
    常用的两个批处理
    windows Path变量优先级
    curl开源库编译
    VS属性页的目录类型
    连通域去噪
    C++调用V8与JS交互
    VS2010,Qt插件安装使用
    utf8转gbk,libcurl中文乱码处理
  • 原文地址:https://www.cnblogs.com/zhulipeng-1998/p/12863906.html
Copyright © 2020-2023  润新知