菱形继承
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,没有的话再去类里找,类里没有,再去父类里找