python中關(guān)于對super()函數(shù)疑問解惑
案例一:運行下面的代碼結(jié)果是什么?
class Person:
def run(self):
print('studying')
class Person1:
def run(self):
print('working')
class Person2:
def run(self):
print('playing')
class Person3(Person,Person1,Person2):
def run(self):
super().run1()
p=Person3()
p.run()
執(zhí)行結(jié)果:
AttributeError: ‘super’ object has no attribute ‘run1’
注意:
1、一個類繼承多個類時,如果父類中沒有提供該方法,類會通過__mro__屬性一直向上搜索,如果直到object還沒有搜索到該方法,那么將會引發(fā)AttributeError異常
案例二:運行下面的代碼結(jié)果是什么?
class Person:
def run(self):
print('studying')
class Person1:
def run(self):
print('working')
class Person2:
def run(self):
print('playing')
class Person3(Person,Person1,Person2):
def run(self):
super(Person1,self).run()
p=Person3()
p.run()
輸出結(jié)果為:playing;而不是working
注意:
1、super()函數(shù)的使用。
使用super()函數(shù)時,可以通過super(類名,self)來指定對哪個對象以哪個類為起點向上搜索父類中的方法。
例如:super(Person1,self).run():表示以Person1類為起點,向上搜索self(Person3的對象)的run方法。
Person1向上搜索到了<class ‘main.Person2’>,所以才會輸出playing
2、print(Person3.mro)的繼承順序為:(<class ‘main.Person3’>, <class ‘main.Person’>, <class ‘main.Person1’>, <class ‘main.Person2’>, <class ‘object’>)
案例三、更復雜些的繼承,和上面的同理
class A:
def who(self):
print('A', end='')
class B(A):
def who(self):
super(B, self).who()
print('B', end='')
class C(A):
def who(self):
super(C, self).who()
print('C', end='')
class D(B, C):
def who(self):
super(D, self).who()
print('D', end='')
item = D()
item.who()
print(D.__mro__)
輸出結(jié)果:
ACBD
(<class ‘main.D’>, <class ‘main.B’>, <class ‘main.C’>, <class ‘main.A’>, <class ‘object’>)
總結(jié)
到此這篇關(guān)于python中關(guān)于對super()函數(shù)疑問解惑的文章就介紹到這了,更多相關(guān)python super()函數(shù)解惑內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實現(xiàn)的爬取網(wǎng)易動態(tài)評論操作示例
這篇文章主要介紹了Python實現(xiàn)的爬取網(wǎng)易動態(tài)評論操作,結(jié)合實例形式分析了Python針對網(wǎng)易評論正則爬取及json格式數(shù)據(jù)轉(zhuǎn)換、提取等相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
一文搞懂Python讀取text,CSV,JSON文件的方法
文件處理是一種用于創(chuàng)建文件、寫入數(shù)據(jù)和從中讀取數(shù)據(jù)的過程,Python 擁有豐富的用于處理不同文件類型的包,從而使得我們可以更加輕松方便的完成文件處理的工作,本文將來為大家詳細講講2022-06-06
Python實現(xiàn)ssh批量登錄并執(zhí)行命令
本篇文章主要是介紹了Python實現(xiàn)ssh批量登錄并執(zhí)行命令,有一些任務可以進行批量完成,Python就可以完成,有需要的同學可以了解一下。2016-10-10
Python+MediaPipe實現(xiàn)檢測人臉功能詳解
MediaPipe是用于構(gòu)建多模態(tài)(例如視頻、音頻或任何時間序列數(shù)據(jù))、跨平臺(即eAndroid、IOS、web、邊緣設(shè)備)應用ML管道的框架。本文將利用MediaPipe實現(xiàn)檢測人臉功能,需要的可以參考一下2022-02-02
使用Pytest.main()運行時參數(shù)不生效問題解決
本文主要介紹了使用Pytest.main()運行時參數(shù)不生效問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02
Python3實現(xiàn)的騰訊微博自動發(fā)帖小工具
這篇文章主要為大家分享下騰訊微博自動發(fā)帖的Python3代碼,需要的朋友可以參考下2013-11-11

