zoukankan      html  css  js  c++  java
  • C3算法

    面向对象的多继承

    先找左 ,再找右

    class A(object):
        pass
    
    
    class B(object):
        def f1(self):
            print('B')
    
    
    class C(A,B):
        pass
    
    obj = C()
    
    obj.f1()

    经典类

    新式类

    经典类和新式类的查找成员的顺序不一样。

    经典类,一条道走到黑(深度优先)。

    新式类,C3算法实现

    class A(object):
        pass
    
    class B(A):
        pass
    
    class C(B):
        pass
    
    class D(object):
        pass
    
    class E(D,C):
        pass
    
    class F(object):
        pass
    
    class G(F):
        pass
    
    class H(C,G):
        pass
    
    class Foo(E,H):
        pass
    
    
    # print(E.__mro__)
    # print(H.__mro__)
    """
    L(Foo + L(E)  + L(H) )
    
    
    
    L(E) = E,D,C,B,A,object
    L(H) = H,C,B,A,G,F,object
    
    Foo = (object) + (G,F,object)
    Foo,E,D,H,C,B,A,G,F,object
    """
    print(Foo.__mro__)
    

      

  • 相关阅读:
    Day60
    Day53
    Day50
    Day49
    Day48
    Day47
    Day46(2)
    Day46(1)
    Day45
    Day44
  • 原文地址:https://www.cnblogs.com/982336352ryan/p/9579016.html
Copyright © 2011-2022 走看看