您好,欢迎来到外链网!
当前位置:外链网 » 站长资讯 » 专业问答 » 文章详细 订阅RssFeed

python类的继承super,python super 多重继承

来源:互联网 浏览:86次 时间:2023-04-08
样例demo如下: class A(object): def go(self): print("go A go!") def stop(self): print("stop A stop!") def pause(self): raise Exception("Not Implemented")class B(A): def go(self): super(B, self).go() print ("go B go!")class C(A): def go(self): super(C, self).go() print ("go C go!") def stop(self): super(C, self).stop() print ("stop C stop!")class D(B,C): def go(self): super(D, self).go() print ("go D go!") def stop(self): super(D, self).stop() print ("stop D stop!") def pause(self): print ("wait D wait!")class E(B,C): passclass F(A): def go(self): print("go F go !") ? 继承关系如下图:

? #instancea = A()b = B()c = C()d = D()e = E()f = F()print('a-----')a.go()print('b-----')b.go()print('c-----')c.go()print('d-----')d.go()print('e-----')e.go()print('a-----')a.stop()print('f-----')f.go()f.stop() 运行结果:? a-----go A go!b-----go A go!go B go!c-----go A go!go C go!d-----go A go!go C go!go B go!go D go!e-----go A go!go C go!go B go!a-----stop A stop!f-----go F go !stop A stop!

首先说说super用法:super的作用是调用 当前类(子类)所继承的 基类(父类)的方法。

就如上述中b 实例调用 父类A中的go方法。

但是这里要注意一点:实例在进行调用方法的时候,首先会在当前类中寻找是否有重载父类方法,总体来说调用顺序在继承链上自下向上的(子类中存在重载方法则优先调用子类中重载的方法,否则在继承链向上寻找(前提是该继承链上存在该方法))就如上述中f.stop()方法。

?