新式类
python2.3以及之后的版本遵循的原则:C3 MRO
其遵循的原则为:一个类同时继承的类中,如果没有共同父类,则往最左的类的父类查询;如果存在共同父类,则从左到右查询。
自省方法__mro__
存在共同父类的情况
1 | class D(object): pass |
顺序解释:
这边需要注意的是B和C有相同的父类,所以B查询后直接查询的C。
1 | 查询关系 |
不存在共同父类的情况
1 | class g(object): pass |
顺序解释:
因为b和c不存在相同的父类,所以查询b查不到后直接查询b的父类。
1 | 查询关系: |