Python中的方法覆蓋:它是什麼,怎麼做?

已發表: 2021-09-28

Python 是一種高級的通用語言,是計算機編程愛好者必須學習的語言。 類似於其他廣泛使用的計算機語言,如 JAVA、C++、Golang、Ruby 等。Python 也是一種面向對象的編程語言,其中編碼依賴於類和對象。 該概念允許開發人員構建簡單、可重用的代碼,然後表示單個對象。 OOP 語言提供了幾個有用的特性,其中之一是方法覆蓋。

在本文中,我們將了解繼承的概念,以探索 Python 中的方法覆蓋。 讓我們從了解什麼是類開始。

目錄

什麼是類?

類是面向對象編程範式中的一個特性或實例。 它是程序內的擴展程序編碼模板。 類幫助程序員在創建時輸入每個對象(數組、字符串、變量等)的初始數據。 它們還使我們能夠定義類的特徵並確定它們將如何處理數據或提供輸入。 程序中定義的父類或超類下有子類或子類。

什麼是繼承? 它有什麼好處?

面向對象編程中的繼承是一種允許類的特性被繼承到其他類或子類的屬性。 這有助於防止數據冗餘,更好地編譯程序,並限制出錯的範圍。

類從其他類派生或繼承特徵的這種能力稱為繼承。 其特徵和屬性用於派生子類的類稱為父類。

以下是繼承的好處:

  • 繼承允許用戶很好地表示實時關係。
  • 它允許重複使用代碼。 它還允許程序員為類提供更多特性。
  • 它允許過渡。 假設 Q 類從 W 類派生特徵,那麼 Q 的子類將自動從 W 類繼承。

繼承類型

繼承分為以下三種類型;

1. 單一繼承

在單繼承中,派生類可以從單個父類繼承特性。 它使代碼可以重用,也可以添加新功能。

2.多重繼承

它是指將多個父類的特性轉移到一個子類。 在這裡,基類的特性被自動繼承到子類中。

3.多級繼承

當父類和子類的特性進一步繼承到另一個派生類中時,稱為多級繼承。

什麼是 Python 中的方法覆蓋?

方法覆蓋是面向對象編程語言的一個特性,其中子類或子類可以為程序提供已在父類或超類中定義的數據的特定特徵或特定實現過程。

當在子類中輸入與父類相同的返回值、參數或名稱時,子類中的實現方法將覆蓋父類中提到的方法。 這稱為方法覆蓋。

它的執行取決於用於調用該方法的數據,而不是父類中已經提供的參考數據。 如果父類的對像用於調用特定於程序的實現方法,則調用寫在父類中的方法的版本。 另一方面,如果使用子類的對象來調用方法,則執行將根據子類中提到的特性進行。 如果您是初學者並且想獲得數據科學方面的專業知識,請查看我們的數據科學課程。

方法覆蓋的特點

本節將探討 python 中的方法覆蓋提供的顯著特性:

  • 方法覆蓋允許在 Python 中使用具有相同名稱或簽名的函數和方法。
  • 方法重載是運行時多態的一個例子。
  • 在方法覆蓋中,總是需要使用繼承的特性。
  • 方法重載是在父類和子類之間進行的。
  • 它用於更改現有方法的行為和實現。
  • 方法覆蓋總是需要至少兩個類。

理解方法覆蓋:多級和多級繼承

多級和多級繼承是大多數面向對象編程語言提供的兩種類型的繼承。 在本節中,我們將了解如何在各種多級繼承中使用方法覆蓋:

1.多重繼承

在這種類或對象的繼承中,一個子類繼承了多個父類或基類的特性和特性。 例如,有三個不同的父類——class.1、class.2、class.3,還有class.a,它是執行多重繼承特性的子類。 class.a 將包含從所有三個基類繼承的特性。

這是一個示例程序:

# 定義父類 1

類Parent1():

# 家長的展示方式

def 顯示(自我):

打印(“在父 1 內”)

# 定義父類 2

類Parent2():

# 家長的展示方式

def 顯示(自我):

print(“在 Parent2 內部”)

# 定義子類

類子(父 1,父 2):

# 孩子的表演方法

def 顯示(自我):

打印(“內部孩子”)

# 驅動程序代碼

obj = 孩子()

obj.show()

obj.display()

輸出:

裡面的孩子

Parent2 內部

2. 多級繼承

在這種類或對象的繼承中,子類是直接從基類繼承而來的,已經具有父類的特徵。 它基本上就像父子或祖孫關係。 子類的特徵是其父類所獨有的。 例如,有一個父類名為class.Q,在class.Q的擴展中形成一個子類。 在這裡,子類可以作為另一個子類的基類。

這是一個示例程序:

類父():

def 顯示(自我):

打印(“內部父級”)

班級兒童(父母):

# 孩子的表演方法

def 顯示(自我):

打印(“內部孩子”)

類 GrandChild(兒童):

# 孩子的表演方法

def 顯示(自我):

打印(“在孫子裡面”)

# 驅動代碼

g = 孫子()

g.show()

g.display()

輸出

孫子裡面

內部父級

在重寫方法中調用基類方法

有一種方法可以在重寫的方法之間調用父類方法。 它可以通過使用以下過程來完成:

  • 使用類名

在子類中重寫方法中寫入類名方法可以調用父類中提供的方法。

  • 使用 super() 函數

Python 的編程語言提供了一個叫做 super() 的函數,專門用來引用父類。

結論

方法覆蓋是 Python 語言最重要的特性之一。 該屬性在編程數據科學應用程序中得到廣泛使用,並允許進行緊湊和高效的數據分析。 方法覆蓋還使代碼的編譯和重新檢查更容易。 使用此功能有一些先決條件:了解類和繼承的基本概念。

如果您想深入了解 Python 中的方法覆蓋,我們建議您攻讀為期 18 個月的數據科學理學碩士課程 upGrad 提供來自 IIIT 班加羅爾和利物浦約翰摩爾大學的這門課程。 該課程教授您統計、使用 Python 進行預測分析、機器學習、數據可視化、大數據分析等技能。 對 Python 概念有深入了解的學生可以很好地應對深度學習、自然語言處理、商業分析和數據工程等學科。

今天就聯繫我們,開始您的學習之旅吧!

區分重載和重載。

覆蓋和重載之間的主要區別在於,覆蓋發生在相同的方法或相同的簽名之間,而重載發生在相同的類方法之間。

1. 方法重載體現了編譯時多態性,而方法重載體現了運行時多態性。
2. Python中不能執行方法重載,而在某些條件下可以執行方法覆蓋。

方法覆蓋的特點是什麼?

以下是方法覆蓋的特點:

1. 它體現了運行時多態性。
2. 它建立了父類和子類之間的鏈接。
3. 由於它至少連接一個類,我們需要使用繼承的特性。
4. 方法覆蓋可幫助您為多個函數使用一個名稱。

我們使用方法覆蓋在派生類中實現父類的方法。

有哪些不同類型的繼承? 是否可以在 Python 中覆蓋私有方法?

首先,方法覆蓋使用多級和多重繼承。

在多級繼承中,子類繼承自包含父類特徵的基類。 但是在多重繼承的情況下,一個子類顯示出多個父類或基類的特徵。

私有方法覆蓋不能在 Java 中發生,但在 Python 中使用稱為“名稱修改”的過程是可行的。