python-33 面向对象之四:mro、super().__init__
类的继承顺序:按照mro线性顺序列表查找,经典类按照深度优先查找,新式类按照广度优先查找
经典类:python2中分经典类和新式类,经典类形如--class A,和新式类,形如--class A(object)
新式类:python3中全是新式类
深度优先:从左自右查找分支,先第一个分支一直查到基类,若无再查第二个分支。。。
广度优先:从左自右查找分支,先查第一个分支,不查到基类,直到最后一个分支才查找基类。。。
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'>]
调用父类:super().__init__()父类初始化