chan

朝生暮死不足笑 但悲百年不足道

【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()

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

评论
还没有评论
    发表评论 说点什么