【Python】多继承|super()
super,就是根据类的继承关系(mro),逐步往上找。
根据类的MRO(类的继承关系)顺序,从下到上去找。
扩展:Python中的类的继承关系是通过 c3算法 计算出来。
——————————-
class Base:
def f1(self):
print("Base")
class Foo(Base):
def f1(self):
print("Foo")
super().f1()
class Bar(Foo):
def f1(self):
print("Bar")
super().f1()
obj = Bar()
obj.f1()
结果

—————————————————-
class Base:
def f1(self):
print("Base")
class Foo(Base):
pass
class Bar(Foo):
def f1(self):
print("Bar")
super().f1()
obj = Bar()
obj.f1()

———————————————–
class Base:
def f1(self):
print("Base")
class Foo:
def f1(self):
print("Foo")
class Bar(Foo,Base):
def f1(self):
print("Bar")
super().f1()
obj = Bar()
obj.f1()

——————————
将继承的顺序调换后,代码及结果如下
class Base:
def f1(self):
print("Base")
class Foo:
def f1(self):
print("Foo")
class Bar(Base,Foo):
def f1(self):
print("Bar")
super().f1()
obj = Bar()
obj.f1()

————————————————–
class Base:
def f1(self):
print("Base")
class Foo:
def f1(self):
print("Foo")
super().f1()
class Bar(Foo,Base):
def f1(self):
print("Bar")
super().f1()
obj = Bar()
obj.f1()

—————————————–