新聞中心
Python中的super()函數(shù)是一個(gè)內(nèi)置函數(shù),用于調(diào)用父類(lèi)(超類(lèi))的方法,它常用于解決多重繼承問(wèn)題,確保子類(lèi)在調(diào)用父類(lèi)方法時(shí)不會(huì)因?yàn)橥椒ǘa(chǎn)生混淆,本文將詳細(xì)介紹super()函數(shù)的用法和示例。

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計(jì)、網(wǎng)站制作與策劃設(shè)計(jì),月湖網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:月湖等地區(qū)。月湖做網(wǎng)站價(jià)格咨詢:18982081108
super()函數(shù)的基本用法
1、基本語(yǔ)法
super()函數(shù)的基本語(yǔ)法如下:
super(Class, self).method(args)
Class是當(dāng)前類(lèi)的元組,self是當(dāng)前實(shí)例對(duì)象,method是要調(diào)用的父類(lèi)方法名,args是傳遞給父類(lèi)方法的參數(shù)。
2、使用場(chǎng)景
當(dāng)子類(lèi)需要調(diào)用父類(lèi)的方法時(shí),可以使用super()函數(shù),這樣可以避免直接使用父類(lèi)名調(diào)用方法,從而避免因同名方法而產(chǎn)生的混淆。
super()函數(shù)的詳細(xì)用法
1、調(diào)用父類(lèi)構(gòu)造方法
當(dāng)子類(lèi)的構(gòu)造方法需要調(diào)用父類(lèi)的構(gòu)造方法時(shí),可以使用super()函數(shù),這樣可以確保父類(lèi)的初始化代碼被正確執(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)用父類(lèi)的構(gòu)造方法
self.age = age
c = Child("Tom", 10)
print(c.name, c.age) # 輸出:Tom 10
2、調(diào)用父類(lèi)普通方法
當(dāng)子類(lèi)需要調(diào)用父類(lèi)的普通方法時(shí),可以使用super()函數(shù),這樣可以避免直接使用父類(lèi)名調(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)用父類(lèi)的普通方法
print("This is child method")
c = Child()
c.method() # 輸出:This is parent method This is child method
3、多重繼承中調(diào)用父類(lèi)方法
當(dāng)子類(lèi)繼承多個(gè)父類(lèi)時(shí),可以使用super()函數(shù)來(lái)調(diào)用指定父類(lèi)的方法和屬性,這樣可以確保在多重繼承的情況下,子類(lèi)可以正確地訪問(wèn)到各個(gè)父類(lèi)的方法。
示例:
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類(lèi)的method方法
B.method(self) # 調(diào)用B類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)锽類(lèi)沒(méi)有繼承A類(lèi),無(wú)法訪問(wèn)A類(lèi)的method方法
C.method(self) # 調(diào)用C類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)镃類(lèi)沒(méi)有定義method方法
D.method(self) # 調(diào)用D類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)镈類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
E.method(self) # 調(diào)用E類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)镋類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
F.method(self) # 調(diào)用F類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)镕類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
G.method(self) # 調(diào)用G類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)镚類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
H.method(self) # 調(diào)用H類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)镠類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
I.method(self) # 調(diào)用I類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)镮類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
J.method(self) # 調(diào)用J類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)镴類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
K.method(self) # 調(diào)用K類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)镵類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
L.method(self) # 調(diào)用L類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)長(zhǎng)類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
M.method(self) # 調(diào)用M類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)镸類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
N.method(self) # 調(diào)用N類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)镹類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
O.method(self) # 調(diào)用O類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)镺類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
P.method(self) # 調(diào)用P類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)镻類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
Q.method(self) # 調(diào)用Q類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)镼類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
R.method(self) # 調(diào)用R類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)镽類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
S.method(self) # 調(diào)用S類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)镾類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
T.method(self) # 調(diào)用T類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)門(mén)類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
U.method(self) # 調(diào)用U類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)閁類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
V.method(self) # 調(diào)用V類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)閂類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
W.method(self) # 調(diào)用W類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)閃類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
X.method(self) # 調(diào)用X類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)閄類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
Y.method(self) # 調(diào)用Y類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)閅類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
Z.method(self) # 調(diào)用Z類(lèi)的method方法,會(huì)報(bào)錯(cuò),因?yàn)閆類(lèi)沒(méi)有繼承B類(lèi),無(wú)法訪問(wèn)B類(lèi)的method方法
a.baz() # 調(diào)用a對(duì)象的baz()方法(注意:這里不是通過(guò)super()函數(shù)來(lái)調(diào)用baz()方法)
super().baz() # 如果存在一個(gè)名為baz的方法且該方法不是私有的(即以雙下劃線開(kāi)頭),則可以通過(guò)super().baz()來(lái)調(diào)用它(注意:這里也不是通過(guò)super()函數(shù)來(lái)調(diào)用baz()方法)
super().foo # 如果存在一個(gè)名為foo的方法且該方法不是私有的(即以雙下劃線開(kāi)頭),則可以通過(guò)super().foo來(lái)調(diào)用它(注意:這里也不是通過(guò)super()函數(shù)來(lái)調(diào)用foo()方法) super().bar # 如果存在一個(gè)名為bar的方法且該方法不是私有的(即以雙下劃線開(kāi)頭),則可以通過(guò)super().bar來(lái)調(diào)用它(注意:這里也不是通過(guò)super()函數(shù)來(lái)調(diào)用bar()方法) super().spam # 如果存在一個(gè)名為spam的方法且該方法不是私有的(即以雙下劃線開(kāi)頭),則可以通過(guò)super().spam來(lái)調(diào)用它(注意:這里也不是通過(guò)super()函數(shù)來(lái)調(diào)用spam()方法) super().eggs # 如果存在一個(gè)名為eggs的方法且該方法不是私有的(即以雙下劃線開(kāi)頭),則可以通過(guò)super().eggs來(lái)調(diào)用它(注意:這里也不是通過(guò)super()函數(shù)來(lái)調(diào)用eggs()方法) super().goo # 如果存在一個(gè)名為goo的方法且該方法不是私有的(即以雙下劃線開(kāi)頭),則可以通過(guò)super().goo來(lái)調(diào)用它(注意:這里也不是通過(guò)super()函數(shù)來(lái)調(diào)用goo()方法) super().zap # 如果存在一個(gè)名為zap的方法且該方法不是私有的(即以雙下劃線開(kāi)頭),則可以通過(guò)super().zap來(lái)調(diào)用它(注意:這里也不是通過(guò)super()函數(shù)來(lái)調(diào)用zap()方法) super().qux # 如果存在一個(gè)名為qux的方法且該方法不是私有的(即以雙下劃線開(kāi)頭),則可以通過(guò)super().qux來(lái)調(diào)用它(注意:這里也不是通過(guò)super()函數(shù)來(lái)調(diào)用qux()方法) super().corge # 如果存在一個(gè)名為corge的方法且該方法不是私有的(即以雙下劃線開(kāi)頭),則可以通過(guò)super().corge來(lái)調(diào)用它(注意:這里也不是通過(guò)super()函數(shù)來(lái)調(diào)用corge()
分享標(biāo)題:pythonsupper函數(shù)
當(dāng)前路徑:http://m.5511xx.com/article/dpssddg.html


咨詢
建站咨詢
