91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中super如何使用

發布時間:2021-06-23 15:59:06 來源:億速云 閱讀:117 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關Python中super如何使用,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。


舉一個很常見的例子:

>>> class Foo:
def bar(self, message):
print(message)

>>> Foo().bar("Hello, World.")
Hello, World.

當存在繼承關系的時候,有時候需要在子類中調用父類的方法,此時最簡單的方法是把對象調用轉換成類調用,需要注意的是這時self參數需要顯式傳遞,例如:

>>> class FooParent:
def bar(self, message):
print(message)

>>> class FooChild(FooParent):
def bar(self, message):
FooParent.bar(self, message)

>>> FooChild().bar("Hello, World.")
Hello, World.

這樣做有一些缺點,比如說如果修改了父類名稱,那么在子類中會涉及多處修改,另外,Python是允許多繼承的語言,如上所示的方法在多繼承時就需要重復寫多次,顯得累贅。為了解決這些問題,Python引入了super()機制,例子代碼如下:

>>> class FooParent:
def bar(self, message):
print(message)


>>> class FooChild(FooParent):
def bar(self, message):
super(FooChild, self).bar(message)


>>> FooChild().bar("Hello, World.")
Hello, World.

表面上看 super(FooChild, self).bar(message)方法和FooParent.bar(self, message)方法的結果是一致的,實際上這兩種方法的內部處理機制大大不同,當涉及多繼承情況時,就會表現出明顯的差異來,直接給例子:

代碼一:

class A:
def __init__(self):
print("Enter A")
print("Leave A")

class B(A):
def __init__(self):
print("Enter B")
A.__init__(self)
print("Leave B")

class C(A):
def __init__(self):
print("Enter C")
A.__init__(self)
print("Leave C")

class D(A):
def __init__(self):
print("Enter D")
A.__init__(self)
print("Leave D")

class E(B, C, D):
def __init__(self):
print("Enter E")
B.__init__(self)
C.__init__(self)
D.__init__(self)
print("Leave E")

E()

結果:

Enter E
Enter B
Enter A
Leave A
Leave B
Enter C
Enter A
Leave A
Leave C
Enter D
Enter A
Leave A
Leave D
Leave E

執行順序很好理解,唯一需要注意的是公共父類A被執行了多次。

代碼二:

class A:
def __init__(self):
print("Enter A")
print("Leave A")

class B(A):
def __init__(self):
print("Enter B")
super(B, self).__init__()
print("Leave B")

class C(A):
def __init__(self):
print("Enter C")
super(C, self).__init__()
print("Leave C")

class D(A):
def __init__(self):
print("Enter D")
super(D, self).__init__()
print("Leave D")

class E(B, C, D):
def __init__(self):
print("Enter E")
super(E, self).__init__()
print("Leave E")

E()

結果:

Enter E
Enter B
Enter C
Enter D
Enter A
Leave A
Leave D
Leave C
Leave B
Leave E


上述就是小編為大家分享的Python中super如何使用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东源县| 彭泽县| 吉水县| 汾阳市| 青龙| 封开县| 南通市| 潼关县| 长泰县| 皮山县| 株洲市| 丰原市| 辽阳县| 丽水市| 米林县| 榆中县| 松原市| 济南市| 贵溪市| 闽清县| 会宁县| 湟中县| 安化县| 丹阳市| 巴林左旗| 澎湖县| 城口县| 米易县| 星子县| 锦州市| 彭州市| 安庆市| 青神县| 锡林郭勒盟| 隆德县| 梁山县| 昌黎县| 成都市| 古浪县| 托克托县| 遂宁市|