Python 中的繼承類型Python 繼承 [附例]

已發表: 2021-02-09

目錄

介紹

爭取乾淨代碼的鬥爭是所有程序員都參與的戰鬥。 並且可以通過適當的面向對象編程概念來征服這場戰鬥。 正確利用 OOP 概念有助於我們提高代碼的可重用性、可讀性、最佳時間和空間複雜度。

用 Python 編碼非常有趣。 它擁有大量的庫支持、面向對象、GUI 可編程性,使其成為所有編程語言中的熱門話題。

繼承是最常用的面向對像功能之一,在 python 中實現它是一項熱情的任務。 那麼,讓我們現在開始吧!

首先,讓我們了解繼承的定義。

遺產

繼承是獲取另一個類的屬性和特徵(變量和方法)的過程。 在這種層次順序中,繼承另一個類的類稱為子類或子類,另一個類稱為父類。

繼承根據所遵循的層次結構以及所涉及的父類和子類的數量進行分類。

繼承有五種類型:

  1. 單一繼承
  2. 多重繼承
  3. 多級繼承
  4. 分層繼承
  5. 混合繼承

單一繼承

這種繼承方式使子類或派生類能夠繼承父類的屬性和特性,避免了代碼的重複,提高了代碼的可重用性。

#父類
以上
我 = 5
def fun1 (自我):
print( “嘿,你在父類中” )

#子類
(上)
我= 10
def fun2 (自我):
print( “嘿,你在子類中” )

temp1=低於()
temp2=以上()
temp1.fun1()
temp1.fun2()
temp2.​​fun1()
打印(temp1.i)
打印(temp2.​​i)
#temp2.​​fun2()

好吧,讓我們看一下上面的代碼。

在上面的代碼中,“Above”是父類,“Below”是繼承父類的子類。 在python中實現繼承是一項簡單的任務,我們只需要在子類的括號中提及父類名即可。 我們正在創建父類和子類的對象,這裡有一個關於繼承的有趣點。 子類可以訪問父類的方法和變量,反之則不然。

所以在上面的代碼中 temp1 對象可以訪問 fun1 和 fun2 方法,而 temp2 對像只能訪問 fun1 方法。 同樣,同樣的規則也適用於代碼中的變量。 從父類對象訪問子類方法或變量將引發錯誤。 如果代碼中的最後一行未註釋,則會引發錯誤。

多重繼承

這種繼承使子類可以從多個父類繼承。 java類不支持這種繼承,但是python確實支持這種繼承。 如果我們需要從不同的類中收集多個特徵,它具有巨大的優勢。

#父類1
甲類 _
演示1= 0
def fun1 (自我):
打印(self.demo1)

#父類2
B
演示2= 0
def fun2 (自我):
打印(self.demo2)

#子類
C(A,B):
def fun3 (自我):
print( “嘿,你在孩子班” )

# 主要代碼
c = C()
c.demo1 = 10
c.demo2 = 5
c.fun3()
print( "第一個數字是:" ,c.demo1)
print( "第二個數字是:" ,c.demo2)

在上面的代碼中,我們創建了兩個父類“A”、“B”。 按照python中的繼承語法,我們創建了一個子類,它繼承了類“A”和“B”。 如前所述,子類可以訪問父類的方法和變量,子類“C”可以訪問其父類的方法。

多級繼承

在多級繼承中,特徵屬性的傳遞是分層地傳遞給多個類的。 為了獲得更好的可視化效果,我們可以將其視為祖先與孫輩的關係,或多於一層的樹中的根與葉。

#父類1

def功能(自我):
print( “車輛用於運輸” )

#兒童班1
(車輛):
def輪子(自己):
print( “一輛汽車有四個輪子” )

#兒童班2
electric_car (汽車):
def專業(自我):
print( “電動汽車靠電行駛” )

電動=電動車()
電氣專業()
電動輪子()
電動功能()

對上面的代碼進行試運行,我們創建了一個類“車輛”,然後我們創建了一個繼承類車輛的類汽車。 現在“車輛”是父類,“汽車”是子類。 後來我們創建了一個“electric_car”類,現在car類是父類,electric_car類是子類,vehicle類和electric_car類之間的關係是多級繼承。

這裡electric_car類可以訪問vehicle和car類的方法和變量,而car類只能訪問vehicle類的方法和變量。 正如所討論的,父類車輛不能訪問子類的任何方法。

分層繼承

這種繼承允許一個類作為父類託管多個子類或子類。 這提供了與多個子類共享方法功能的好處,從而避免了代碼重複。

#父類

def fun1 (自我):
print( “嘿,你在父類中” )

#兒童班1
班級child1 (父母):
def fun2 (自我):
print( “你好,你在兒童班 1” )

#兒童班2
child2 (父母):
def fun3 (自我):
print( “你好,你在二班” )

#兒童班3
班級child3 (父母):
def fun4 (自我):
print( “你好,你在兒童班 3” )

# 主程序
child_obj1 = child3()
child_obj2 = child2()
child_obj3 = child1()
child_obj1.fun1()
child_obj1.fun4()
child_obj2.fun1()
child_obj2.fun3()
child_obj3.fun1()
child_obj3.fun2()

在上面的代碼中,我們有一個父類和多個繼承同一個父類的子類。 現在所有子類都可以訪問父類的方法和變量。 我們創建了一個“Parent”類和 3 個子類“child1”、“child2”、“child3”,它們繼承了同一個父類“Parent”。

結帳: Python 開源項目的想法

混合繼承

如果在同一代碼中實現了不止一種類型的繼承,則繼承稱為混合繼承。 此功能使用戶能夠最好地利用繼承功能。 這滿足了實現一個在實現中需要多重繼承的代碼的需求。

A類:
def fun1(自我):
print(“嘿,你在 A 班”)B(A) 班:
def fun2(自我):
print(“嘿,你在 B 班”) C(A) 班:
def fun3(自我):
print(“嘿,你在 C 班”)class D(C,A): #line 13
def fun4(自我):
print(“嘿,你在 D 班”)#main 程序
參考 = D()
ref.fun4()
ref.fun3()
ref.fun1()

在上面的代碼中,我們可以看到我們已經實現了不止一種類型的繼承。 A、B、C 類實現分層繼承,A、C、D 類實現多級繼承。 不,這些單獨的繼承具有訪問父類的方法和變量的單獨屬性。 另外,還有一點需要注意。

當我們實現多級繼承時,我們遵循類似“child_class(parent_class1, parent_class2)”的語法。 但是,如果“parent_class1”在層次上高於“parent_class2”,則此語法將引發錯誤。 如果我們想實現這種語法,那麼“parent_class1”必須在層次上低於“parent_class2”。 例如在上面的代碼中,如果第 13 行有一個語法類 D(A, C),那麼代碼將無法工作,因為 C 類在層次上低於 A 類。

學習世界頂尖大學的數據科學課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

閱讀: Python 項目理念和主題

結論

我們已經了解了繼承的用途和需求,並理解了繼承的定義。 此外,我們還瀏覽了繼承的類型,並瀏覽了每種繼承的實現代碼和解釋。 了解不同類型繼承中變量和方法訪問的規則。

既然您已經了解了 python 中不同類型的繼承,請嘗試實現它們並嘗試在您的代碼中使用它們。 嘗試使用適當的繼承來優化您的代碼。

如果您想了解數據科學,請查看 IIIT-B 和 upGrad 的數據科學 PG 文憑,該文憑專為在職專業人士而設,提供 10 多個案例研究和項目、實用的實踐研討會、與行業專家的指導、1-與行業導師面對面交流,400 多個小時的學習和頂級公司的工作協助。

多重繼承和多級繼承有什麼區別?

許多初學者程序員經常對多重繼承和多級繼承感到困惑。 下面說明了這兩種繼承類型之間的一些顯著差異。
多重繼承-
1. 當子類從多個基類繼承其屬性和特性時,這種繼承稱為多重繼承。
2. 它沒有被廣泛使用,因為多重繼承可能很難理解。
3.它只有兩個類級別:基類和派生類。
多級繼承
1. 子類從其基類繼承屬性的繼承,該繼承進一步從另一個基類繼承屬性,使前者成為子類,稱為多級繼承。
2.這種繼承有很大的用途,因此被廣泛使用。
3. 至少具有三個類級別:基類、中間類和派生類。

你對混合繼承了解多少?

混合繼承是一種獨特的繼承類型。 顧名思義,它不是一個新概念,而是兩種或多種繼承類型的組合。 例如,顯示多級和多級繼承的類是混合繼承的一個示例。

你對 Python 中的訪問修飾符了解多少?

在 Python 中,有 3 種類型的訪問修飾符,如下所述:
1.公共訪問修飾符- 類的公共成員可由程序的任何部分訪問。 在 Python 中,如果未指定數據成員或成員函數的訪問說明符,則默認為 public。
2.受保護的訪問修飾符——如果數據成員或成員函數被定義為受保護的,那麼它只能由該類的派生類訪問。
3.私有訪問修飾符——私有訪問修飾符是最安全的訪問說明符。 私有成員只能在定義它們的類中訪問。