资源的覆盖:
包括:属性的覆盖,方法重写
原理:在MRO的资源检索链中,优先级比较高的类写了一个和优先级比较低的类一样的一个资源(属性或方法)。到时候,再去获取相关资源,就会优先选择优先级比较高的资源。而摒弃优先级比较低的资源。造成“覆盖”的假象。
注意事项:当调用优先级比较高的资源时,注意self的变化。
# 资源的覆盖: class D(object): age = "d" pass class C(D): age = "c" def test(self): print("c") pass class B(D): age = "b" def test(self): print("b") pass class A(B, C): age = "a" pass # 查看A的MRO顺序 import inspect print(inspect.getmro(A)) print(A.__mro__) print(A.mro()) print(A.age) print(A().test())