1、子类会先于父类被检查
2、对个父类会根据他们在列表中的顺序被检查
3、如果对下一个类存在两个合法的选择,选择第一个父类
经典类
在python2中-》经典类:没有继承object的类,以及它的子类都称之为经典类
class Foo:
pass
class Bar(Foo):
pass
新式类
在python2中-》新式类:继承object的类,以及它的子类都称之为新式类
class Foo(object):
pass
class Bar(Foo):
pass
在python3中-》新式类:一个类没有继承object类,默认就继承object
class Foo():
pass
print(Foo.__bases__)
输出
而Python中子类可以同时继承多个父类,如果继承了多个父类,那么属性的查找方式有两种,分别是:深度优先和广度优先
先找左边的B,B没有在往B的父类E,要是E没有就去找G
如果G没有,就回来从C找,c没有在找F,这样以此类推
一条道走到黑
A没有去B找,B没有去E找,E有爹是G,新式类是广度优先不会一条道走到底,我去找G,在找C呢,C有爹是F,F也有爹叫G,但是不找F的爹,我广度优先,往右广度平移,在找D,D在爹G
#_*_coding:utf-8_*_
class A:
# def test(self):
# print('from A')
pass
class B(A):
# def test(self):
# print('from B')
pass
class C(A):
# def test(self):
# print('from C')
pass
class D(B):
# def test(self):
# print('from D')
pass
class E(C):
# def test(self):
# print('from E')
pass
class F(D,E):
# def test(self):
# print('from F')
pass
#F,D,B,E,C,A
print(F.mro())
# f=F()
# f.test()