python-33 面向对象之四:mro、super().__init__

类的继承顺序:按照mro线性顺序列表查找,经典类按照深度优先查找,新式类按照广度优先查找python

经典类:python2中分经典类和新式类,经典类形如--class A,和新式类,形如--class A(object)ide

 

新式类:python3中全是新式类spa

 

深度优先:从左自右查找分支,先第一个分支一直查到基类,若无再查第二个分支。。。code

广度优先:从左自右查找分支,先查第一个分支,不查到基类,直到最后一个分支才查找基类。。。blog

class A:
    def Test(self):
        print('A')
    pass
class G:
    def Test(self):
        print('G')
    pass
class BL(A):
    # def Test(self):
    #     print('BL')
    pass
class BR(A):
    def Test(self):
        print('BR')
    pass
class F(G):
    # def Test(self):
    #     print('F')
    pass
class CL(BL):
    # def Test(self):
    #     print('CL')
    pass
class CR(BR):
    def Test(self):
        print('CR')
    pass
class D(CL,CR,F):
    # def Test(self):
    #     print('D')
    pass

d=D()
d.Test()#D-->CL--BL--CR--BR--A--F--G,PY3中广度优先查找
print(D.mro())
#[<class '__main__.D'>, <class '__main__.CL'>, <class '__main__.BL'>, <class '__main__.CR'>, <class '__main__.BR'>, <class '__main__.A'>, <class '__main__.F'>, <class '__main__.G'>, <class 'object'>]
View Code

 调用父类:super().__init__()父类初始化继承

相关文章
相关标签/搜索