zoukankan      html  css  js  c++  java
  • 继承

    继承(Inherit)

    继承的概念

    • 子类继承父类的内容,包括字段、方法、属性。
    • 将多个类共有的方法提取到父类中,子类仅需继承父类而不必一一实现每个方法。
    • 基类和派生类只是与父类、子类的叫法不一样

    查看继承

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

    继承的查找顺序

    先在自己对象里找,然后去类里找,最后去父类里去找

    哪一个对象调用,self就是代指的哪一个对象,(父类,子类里的self,都是对象)

    多继承

    1. Java和C#中则只能继承一个类,Python的类可以继承多个类
    2. Python的类如果继承了多个类,那么其寻找方法的方式有两种,分别是:深度优先和广度优先
    • python2中分经典类和新式类,经典类为深度优先,新式类为广度优先。
      • 经典类:自定义最开始的类不继承任何东西
      • 新式类:自定义最开始的类继承object类
    • python3种自定义的类全部默认继承新式类,均为广度优先

    • 深度优先
      • 示例
    • 广度优先
      • 示例

     

    在子类中重用父类的属性
    方式一
    指名道姓: (不依赖继承)
    新方法下执行

    def new():
        父类.方法()
        父类.__init__() #调用父类的init方法

    方式二
    super() (依赖继承)
    super(自己类名,self).方法() 得到一个父类的对象
    super(自己类名,self).__init__()
    python3简写为super().方法()
    super()从mro列表当前位置往后去找,

    抽象类和接口类

    from abc import ABCmeta, abstractmethod
    class Person(classmeta=ABCmeta)
    
    • 抽象类:
      • 在Python中,默认是有的
      • 父类的方法子类必须实现
      • 抽象类不能被实例化
      • 抽象类内的方法可以被简单实现
      • 抽象类不建议多继承
    • 借口类:
      • 做出一个良好的抽象,这个抽象规定了一个兼容接口,使得外部调用者无需关心具体细节,可一视同仁的处理实现了特定接口的所有对象
      • 在python中,默认是没有的,只是一种程序设计理念
      • 接口类的方法不能被实现
      • 接口隔离原则:
        • 应该有多个独立的接口,而不是多功能的单个接口
      • 接口类推荐使用多继承
  • 相关阅读:
    浅谈Java 8的新特性和使用场景
    Oracle下通过EXPDP导出某用户下的所有表,实例
    官网下载I.MX6参考手册
    TFTP服务开启
    二、 U-Boot 命令使用
    CP15协处理器
    Linux内核配置Kconfig语法
    M.2接口是如何辨别插入的SSD是SATA协议还是NVME协议?
    SSH 服务开启
    一 、 UBOOT简介
  • 原文地址:https://www.cnblogs.com/leiyiming/p/9194590.html
Copyright © 2011-2022 走看看