菱形继承

1,菱形继承

当一个子类继承多个父类时,多个父类最终继承了同一个类。称之为菱形继承

2.菱形继承的问题:

python2区分经典类与新式类,如果子类的继承是一个菱形继承,那么经典类与新式类的区别为?

经典类下查找属性:深度优先查找,一条道走到底。

新式类下查找属性:广度优先查找

3.例如:

class G(object):
# def test(self):
# print('from G')
pass

class E(G):
# def test(self):
# print('from E')
pass

class B(E):
# def test(self):
# print('from B')
pass

class F(G):
# def test(self):
# print('from F')
pass

class C(F):
# def test(self):
# print('from C')
pass

class D(G):
# def test(self):
# print('from D')
pass

class A(B,C,D):
def test(self):
print('from A')
# pass

obj=A()
print(A.mro()) #mro是一个内置的继承查找的算法
# obj.test() #A->B->E-C-F-D->G-object
查找的时候,先从对象里找test,没有的话再去类里找,类里没有,再去父类里找
原文地址:https://www.cnblogs.com/fxc-520520/p/9234346.html