新聞中心
Python中的super()函數(shù)是一個內(nèi)置函數(shù),用于調(diào)用父類(超類)的方法,它常用于解決多重繼承問題,確保子類在調(diào)用父類方法時不會因為同名方法而產(chǎn)生混淆,本文將詳細介紹super()函數(shù)的用法和示例。

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計、網(wǎng)站制作與策劃設(shè)計,月湖網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:月湖等地區(qū)。月湖做網(wǎng)站價格咨詢:18982081108
super()函數(shù)的基本用法
1、基本語法
super()函數(shù)的基本語法如下:
super(Class, self).method(args)
Class是當前類的元組,self是當前實例對象,method是要調(diào)用的父類方法名,args是傳遞給父類方法的參數(shù)。
2、使用場景
當子類需要調(diào)用父類的方法時,可以使用super()函數(shù),這樣可以避免直接使用父類名調(diào)用方法,從而避免因同名方法而產(chǎn)生的混淆。
super()函數(shù)的詳細用法
1、調(diào)用父類構(gòu)造方法
當子類的構(gòu)造方法需要調(diào)用父類的構(gòu)造方法時,可以使用super()函數(shù),這樣可以確保父類的初始化代碼被正確執(zhí)行。
示例:
class Parent:
def __init__(self, name):
self.name = name
class Child(Parent):
def __init__(self, name, age):
super(Child, self).__init__(name) # 調(diào)用父類的構(gòu)造方法
self.age = age
c = Child("Tom", 10)
print(c.name, c.age) # 輸出:Tom 10
2、調(diào)用父類普通方法
當子類需要調(diào)用父類的普通方法時,可以使用super()函數(shù),這樣可以避免直接使用父類名調(diào)用方法,從而避免因同名方法而產(chǎn)生的混淆。
示例:
class Parent:
def method(self):
print("This is parent method")
class Child(Parent):
def method(self):
super(Child, self).method() # 調(diào)用父類的普通方法
print("This is child method")
c = Child()
c.method() # 輸出:This is parent method This is child method
3、多重繼承中調(diào)用父類方法
當子類繼承多個父類時,可以使用super()函數(shù)來調(diào)用指定父類的方法和屬性,這樣可以確保在多重繼承的情況下,子類可以正確地訪問到各個父類的方法。
示例:
class A:
def method(self):
print("This is A's method")
class B:
def method(self):
print("This is B's method")
A.method(self) # 調(diào)用A類的method方法
B.method(self) # 調(diào)用B類的method方法,會報錯,因為B類沒有繼承A類,無法訪問A類的method方法
C.method(self) # 調(diào)用C類的method方法,會報錯,因為C類沒有定義method方法
D.method(self) # 調(diào)用D類的method方法,會報錯,因為D類沒有繼承B類,無法訪問B類的method方法
E.method(self) # 調(diào)用E類的method方法,會報錯,因為E類沒有繼承B類,無法訪問B類的method方法
F.method(self) # 調(diào)用F類的method方法,會報錯,因為F類沒有繼承B類,無法訪問B類的method方法
G.method(self) # 調(diào)用G類的method方法,會報錯,因為G類沒有繼承B類,無法訪問B類的method方法
H.method(self) # 調(diào)用H類的method方法,會報錯,因為H類沒有繼承B類,無法訪問B類的method方法
I.method(self) # 調(diào)用I類的method方法,會報錯,因為I類沒有繼承B類,無法訪問B類的method方法
J.method(self) # 調(diào)用J類的method方法,會報錯,因為J類沒有繼承B類,無法訪問B類的method方法
K.method(self) # 調(diào)用K類的method方法,會報錯,因為K類沒有繼承B類,無法訪問B類的method方法
L.method(self) # 調(diào)用L類的method方法,會報錯,因為L類沒有繼承B類,無法訪問B類的method方法
M.method(self) # 調(diào)用M類的method方法,會報錯,因為M類沒有繼承B類,無法訪問B類的method方法
N.method(self) # 調(diào)用N類的method方法,會報錯,因為N類沒有繼承B類,無法訪問B類的method方法
O.method(self) # 調(diào)用O類的method方法,會報錯,因為O類沒有繼承B類,無法訪問B類的method方法
P.method(self) # 調(diào)用P類的method方法,會報錯,因為P類沒有繼承B類,無法訪問B類的method方法
Q.method(self) # 調(diào)用Q類的method方法,會報錯,因為Q類沒有繼承B類,無法訪問B類的method方法
R.method(self) # 調(diào)用R類的method方法,會報錯,因為R類沒有繼承B類,無法訪問B類的method方法
S.method(self) # 調(diào)用S類的method方法,會報錯,因為S類沒有繼承B類,無法訪問B類的method方法
T.method(self) # 調(diào)用T類的method方法,會報錯,因為T類沒有繼承B類,無法訪問B類的method方法
U.method(self) # 調(diào)用U類的method方法,會報錯,因為U類沒有繼承B類,無法訪問B類的method方法
V.method(self) # 調(diào)用V類的method方法,會報錯,因為V類沒有繼承B類,無法訪問B類的method方法
W.method(self) # 調(diào)用W類的method方法,會報錯,因為W類沒有繼承B類,無法訪問B類的method方法
X.method(self) # 調(diào)用X類的method方法,會報錯,因為X類沒有繼承B類,無法訪問B類的method方法
Y.method(self) # 調(diào)用Y類的method方法,會報錯,因為Y類沒有繼承B類,無法訪問B類的method方法
Z.method(self) # 調(diào)用Z類的method方法,會報錯,因為Z類沒有繼承B類,無法訪問B類的method方法
a.baz() # 調(diào)用a對象的baz()方法(注意:這里不是通過super()函數(shù)來調(diào)用baz()方法)
super().baz() # 如果存在一個名為baz的方法且該方法不是私有的(即以雙下劃線開頭),則可以通過super().baz()來調(diào)用它(注意:這里也不是通過super()函數(shù)來調(diào)用baz()方法)
super().foo # 如果存在一個名為foo的方法且該方法不是私有的(即以雙下劃線開頭),則可以通過super().foo來調(diào)用它(注意:這里也不是通過super()函數(shù)來調(diào)用foo()方法) super().bar # 如果存在一個名為bar的方法且該方法不是私有的(即以雙下劃線開頭),則可以通過super().bar來調(diào)用它(注意:這里也不是通過super()函數(shù)來調(diào)用bar()方法) super().spam # 如果存在一個名為spam的方法且該方法不是私有的(即以雙下劃線開頭),則可以通過super().spam來調(diào)用它(注意:這里也不是通過super()函數(shù)來調(diào)用spam()方法) super().eggs # 如果存在一個名為eggs的方法且該方法不是私有的(即以雙下劃線開頭),則可以通過super().eggs來調(diào)用它(注意:這里也不是通過super()函數(shù)來調(diào)用eggs()方法) super().goo # 如果存在一個名為goo的方法且該方法不是私有的(即以雙下劃線開頭),則可以通過super().goo來調(diào)用它(注意:這里也不是通過super()函數(shù)來調(diào)用goo()方法) super().zap # 如果存在一個名為zap的方法且該方法不是私有的(即以雙下劃線開頭),則可以通過super().zap來調(diào)用它(注意:這里也不是通過super()函數(shù)來調(diào)用zap()方法) super().qux # 如果存在一個名為qux的方法且該方法不是私有的(即以雙下劃線開頭),則可以通過super().qux來調(diào)用它(注意:這里也不是通過super()函數(shù)來調(diào)用qux()方法) super().corge # 如果存在一個名為corge的方法且該方法不是私有的(即以雙下劃線開頭),則可以通過super().corge來調(diào)用它(注意:這里也不是通過super()函數(shù)來調(diào)用corge()
文章名稱:pythonsupper函數(shù)
本文來源:http://m.5511xx.com/article/dpssddg.html


咨詢
建站咨詢
