zoukankan      html  css  js  c++  java
  • 继承


    1、什么是继承
    继承是一种新建类的方式,新建的类称之为子类,被继承的类称之为基类、父类、超类
    继承描述的是一种“遗传”的关系:子类可以重用父类的属性

    在python中的继承注意两点:
    1. 在python中支持一个子类同时继承多个父类,
    2. python中类分为两种:
    新式类:但凡继承object的类,以及该类的子类。。。都是新式类
    在python3中一个类如果没有继承人类类,默认继承object类,即python3中所有的类都是新式类

    经典类: 没有继承object的类,以及该类的子类。。。都是经典类
    在python2中才区分新式类与经典类

    2、为何要用继承
    1. 减少代码冗余


    继承解决的是类与类之间的代码冗余问题,一定是一个类是另外一个类的子类


    继承关系的查找
    总结对象之间的相似之处得到类,总结类与类之间的相似之处就得到了类们的父类

    在子类派生出的新方法中重用父类功能
    方式一:
    指名道姓地访问某一个类的函数
    注意:
    1. 该方式与继承是没有关系的
    2. 访问是某一个类的函数,没有自动传值的效果


    方式二:只能在子类中用
    在python2:super(自己的类名,对象自己)
    在python3:super()
    调用super()会得到一个特殊的对象,该特殊的对象是专门用来引用父类中的属性的,!!!完全参照mro列表!!!
    注意:
    1. 该方式与继承严格依赖于继承的mro列表
    2. 访问是绑定方法,有自动传值的效果


    单继承背景下属性查找的顺序:对象-》对象的类-》父类-》...


    多继承背景下属性查找的顺序:对象-》对象的类-》按照从左往右的顺序一个一个的分支找下去
    一旦出现菱形继承问题,新式类与经典类在属性查找上的区别是
    新式类:广度优先查找,在最后一个分支查找顶级类
    经典类:深度优先查找,在第一个分支就查找顶级类

    在新式类中,提供了一个mro方法

  • 相关阅读:
    shell脚本
    Dockerfile
    【剑灵攻略】003、XXXfragment that is not a fragment错误,fragment认不出来
    【剑灵攻略】002、android工程引用方式
    【剑灵攻略】001、底部菜单栏实现
    ViewPager动画切换
    android raw与assets区别
    android+eclipse+maven环境搭建
    解决在IE8中无法使用原生JSON的问题
    Windows Phone Toast通知
  • 原文地址:https://www.cnblogs.com/liangchengyang/p/9506083.html
Copyright © 2011-2022 走看看