class CommClass:
def __init__(self):
print("CommClass")
def method(self):
print("CommClass-method")
class Base1(CommClass):
def __init__(self):
CommClass.__init__(self)
print("Base1")
class Base2(CommClass):
def __init__(self):
CommClass.__init__(self)
print("Base2")
def method(self):
print("Base2-method")
class Son(Base1, Base2):
def __init__(self):
Base1.__init__(self)
Base2.__init__(self)
print("Son")
pass
Son().method()
print(Son.mro())
# mro计算规则:C + Merge(L(Base1)+L(Base2) + Base1 + Base2 + Object)
# 线性L(Base1) = Base1 + CommClass
# 线性L(Base2) = Base2 + CommClass
# 取线性头,若头在Merge列表中则删除
# C + Base1 + Merge(CommClass + [Base2, CommClass] + Base2 + Object)
# C + Base1 + Base2 + Merge(CommClass + CommClass + Object) # 去重复
# C + Base1 + Base2 + CommClass + Object
# [<class '__main__.Son'>, <class '__main__.Base1'>, <class '__main__.Base2'>, <class '__main__.CommClass'>, <class 'object'>]
python mro计算规则
于 2024-07-14 22:59:08 首次发布