zoukankan      html  css  js  c++  java
  • Python学习第二十一节(继承顺序,super)

    复习:
    抽象类

    通过装饰器来定义这个函数。
    抽象类本身也是个类,但是本身不能被实例化。

    继承的实现原理
    多重继承,当一个类是多个父类的子类,查找的顺序是:
    __dict__ 》 然后按照继承的()左右顺序来寻找

    如果子类的父类还有一个父类,那么他会先去寻找自己的树状类(D找不到自己的就去找A,A找不到就去找E,然后再去找b、c),而不是直接左右顺序寻找。
    新式类中,上图这种,3条岔路的,是AD>B>C这个顺序。广度优先。

    如上图,练习。

    新式类里,菱形找是先找EB>FC>GDA 这个顺序。

    这个mro可以看到调用路线,但是只有新式类才有,经典类没有。
    经典类是先走到头,在走别的路线。
    H>E>B>A>F>C>G>D这个顺序。深度优先


    子类调用父类的方法

    super()只有新式类里有super,按照新式类的继承顺序来继承。
    super().foo() 调用父类的foo()函数,不用写参数,因为是绑定方法所以自动传参。
    super的缺点是找到一个就会停止。
    People.__init__这种可以写多个,可以找多个。指名道姓方法。

    python2和pyhton3的区别。

    封装

    假装隐藏了数据属性,在属性前面加上__ 之后就对象就不能直接调用了,实际上是在__前面加上了_类名,可以用t.__dict__来查看

    封装的变形,只在类定义阶段或者对象定义阶段(实例化)发生
    之后更改的不会变形。

    self.bar() 先从self自己找bar()函数。所以打印的先是print('from A.foo')
    然后找的是class B的def bar()

    变形之后 找到的是A的def foo 的self.__bar
    因为在定义的时候__bar就变形了。

  • 相关阅读:
    人民币汇率
    世界金融危机史
    选题==》方法
    宏观经济学理论
    央行货币政策执行报告
    货币政策科普
    几个数据库使用记录 & DPD-GMM调整到通过检验
    OBOR数据处理
    stata几个常用命令
    个人闭包理解(结合代码)
  • 原文地址:https://www.cnblogs.com/ArmoredTitan/p/7200522.html
Copyright © 2011-2022 走看看