zoukankan      html  css  js  c++  java
  • python2和python3多继承中的优先级

    在多继承中,当一个类继承了多个类的时候,这个时候就需要了解它的调用优先级。子类会优先调用最近的一个父类

    class A:
        def fuc(self):
            print('A')
    class B(A):
        def fuc(self):
            print('B')
    
    class C(A):
        def fuc(self):
            print('C')
    class D(B,C):
        def fuc(self):
            print('D')
    
    d = D()
    d.fuc()

    此时我们调用fuc时因为子类里面也有,就会优先调用子类里面的。

    当我们注释掉D的方法时。
    这个时候就会往B里面去找。当B也没有时。
    就会去c。最后A。这种查找方式就称为广度优先。

    在python2中则是深度优先。就是顺着一条路走到黑,走过地就不再走了。

    注意:python2.7中新式和经典式都存在。

    super只在python3中有。

    class A:
        def fuc(self):
            print('A')
    class B(A):
    
        def fuc(self):
            super().fuc()
            print('B')
    
    class C(A):
    
        def fuc(self):
            super().fuc()
            print('C')
    class D(B,C):
        def fuc(self):
            super().fuc()
            print('D')
    
    d = D()
    d.fuc()

    super的本质:不是直接找父类,而是根据调用者的节点位置的广度优先顺序来的。

    广度优先。

  • 相关阅读:
    汇编-实验9
    Starling开源手势库AcheGesture
    Robotlegs2的Starling扩展
    Flash Builder 4.6/4.7 注释以及字体大小修改
    js中函数的理解
    js对象引用赋值后
    var声明提前 undefined
    光棍节程序员闯关秀
    body和普通div背景图宽高百分比的区别
    笔试题
  • 原文地址:https://www.cnblogs.com/zly9527/p/11581224.html
Copyright © 2011-2022 走看看