zoukankan      html  css  js  c++  java
  • python全栈day16——面向对象继承

    复习重点:
    1.只要对象的某个属性被直接赋值,那么一定是对象的命名空间发生变化。
    2.只要是静态变量,就用类名直接操作它。

    面向对象的三大特性——继承

    1.继承和抽象

    抽象:抽取事物类似或者比较像的的部分。

    继承:是基于抽象的结果,通过编程语言去实现它,肯定是先经历抽象这个过程,才能通过继承的方式去表达出抽象的结构

    2.单继承

    #继承与重用:

     父类中的属性和方法都可以被子类使用。

    #继承与派生

     定义:子类在父类的基础上又新创建了自己需要的方法和属性。
      1.当子类中又要被调用的方法时,子类对象会直接选择子类中的方法或者变量,
      2.父类中的变量和方法不会被自动执行
      3.如果我们既想要执行子类方法,也想执行父类的方法,那么需要在子类的方法中调用父类的同名方法。
      4.调用方法:
       1)父类.方法名(self,...)需要传入self
       2)super().方法名(...)不需要传入self
       3)情况分析:
        (1)子类有的父类没有:这个时候直接对象直接使用子类的属性或者方法。
        (2)子类有的父类也有:如果对象需要使用子类的方法或属性可以直接调用,但是如果需要调用父类的方法或者属性就需要使用:父类.方法名(self,...)需要传入self或者super().方法名(...)不需要传入self。

    #规范的编程模式

      #抽象类    

      1,运用场景:多人开发、复杂的需求、后期的扩展在工作中;
      2,应用:
      抽象类是一个规范它基本不会实现什么具体功能,抽象类是不能被实例化的
      3,步骤
        1.在文件头声明:from abc import ABCMeta,abstractmethod
        2.在抽象类创建的时候指定metaclass = ABCMeta
        3.在类中需要规范子类的函数头前加上装饰器@abstractmethod

    3.多继承

    #语法

      不是所有语言都支持多继承,java就不支持,C++就支持多继承

    #接口类

      python中允许多继承的使用,所以不需要使用接口

    #新式类和经典类

      在python3中,所有类都是新式类,所有的新式类都有一个默认的父类:object
      而在python2x中,在2.7中经典类和新式类并存。
      在python2中:
       class Studet:pass被默认为经典类
       要变成新式类必须这样写:class Studet(obj):pass

    #多继承的顺序,新式类和经典类的区别

      新式类中的所有的多继承关系寻找方法的顺序为广度优先,遵循mro算法
      注意:super不是单纯的找父类,而会遵循mro的顺序
      python2中不提供mro和super

      新式类和经典类的区别:

      新式类:
      1)所有的多继承关系寻找方法的顺序—遵循广度优先算法;
      2)继承object;
      3)mro方法;
      4)super:super不是单纯的找父类,而是遵循mro顺序。

      经典类:
      1)python2.x
      2)不主动继承object
      3)经典类在找父类中方法的过程中—遵循深度优先算法;
      4)不提供mro方法和super

  • 相关阅读:
    [javase学习笔记]-8.7 静态代码块
    QT5.6 编译SQLServer驱动
    mnesia怎样改动表结构
    UVA 1541
    Topcoder SRM625 题解
    android自己定义渐变进度条
    显示vim当前颜色主题
    启动vim不加载.vimrc
    为ubuntu添加多媒体以及flash等等常用包
    linux c:关联变量的双for循环
  • 原文地址:https://www.cnblogs.com/abner28/p/9549159.html
Copyright © 2011-2022 走看看