Python 中方法重載的完整指南(附示例)

已發表: 2022-04-23

重載是函數、方法或運算符在將不同參數傳遞給相同的參數時以不同方式工作的能力。 Python中的方法重載或函數重載有常用的術語。 重載的一些主要優點是您可以以多種方式使用一種方法,這有助於您在與團隊合作時保持代碼更簡潔並消除複雜性。

目錄

什麼是方法重載?

在面向對象的編程中,方法重載用於針對特定對象,可以根據項目需求以多種方式調用特定方法的場景。

Python 中的方法重載示例將在本文後面詳細討論。

什麼是方法覆蓋?

Python 中的方法覆蓋類似於方法重載,只是方法覆蓋發生在子類和超類之間。 它具有與何時調用方法相同的參數。 然而,由於某些功能被超類覆蓋,它們的行為有所不同。

方法覆蓋示例

X 類:

定義方法1(自我):

print('我是 X 班的第一個特徵')

定義方法2(自我):

print('我是 X 班的第二個特徵')

Y(X) 類:

定義方法1(自我):

print('我是 Y 類中 X 類的修改後的第一個特徵')

定義方法3(自我):

print('我是 Y 類的一個特徵')

obj = Y()

obj.method1()

輸出:

我是 Y 類中 X 類的修改後的第一個特徵

method1 被類 Y 覆蓋。

在 upGrad 在線學習數據科學課程

Python中的方法重載

Python 中方法重載的問題在於 Python 默認不支持它。 但是,有一些解決方法可以做到這一點。

問題

讓我們考慮以下代碼:

定義添加(a,b):

s = a + b

印刷)

定義添加(a,b,c):

s = a + b + c

印刷)

# add(8, 9) 顯示錯誤

添加(8, 9, 2)

乍一看,代碼看起來不錯,但是當您嘗試使用兩個參數執行它時,Python 會顯示一個錯誤,因為在 Python 中,當您有多個同名但參數數量不同的方法時,只有可以使用最新定義的方法。

有兩種不同的方法可以解決 Python 中方法重載的問題。

1:使用相同的方法根據參數的數據類型不同

我們可以看到一個參數來了解數據類型,以及允許將可變數量的參數傳遞給 Python 中的方法的 *args。 然後,我們可以使用 if 語句來控制方法如何根據輸入進行行為。

代碼:

def add(dt, *args):

如果 dt =='int':

s = 0

如果 dt =='str':

s = ”

對於 args 中的 x:

s = s + x

印刷)

添加('int', 11, 9)

添加(“str”、“你好”、“你好嗎?”)

輸出:

20

你好嗎?

這是在 Python 中實現方法重載的第一個解決方法。

探索我們的熱門數據科學課程

IIITB 數據科學高級管理研究生課程 商業決策數據科學專業證書課程 亞利桑那大學數據科學理學碩士
IIITB 數據科學高級證書課程 馬里蘭大學數據科學和商業分析專業證書課程 查看所有數據科學課程

2:使用Multiple Dispatch Decorator(更有效的方式)

Multiple Dispatch Decorator 不是一種解決方法,它的工作方式與預期的完全一樣。 您可以使用 pip3 安裝它。

pip3 安裝多個調度

代碼:

from multiple dispatch import dispatch

@dispatch(int,int) # 用於 2 個整數參數

定義添加(n1,n2):

s = n1 + n2

印刷)

@dispatch(int,int,int) # 用於 3 個整數參數

定義添加(n1,n2,n3):

s = n1 + n2 + n3

印刷)

@dispatch(float,float,float) # 用於浮點參數

定義添加(n1,n2,n3):

s = n1 + n2 + n3

印刷

添加(5,2)

添加(6,1,4)

添加(3.4,1.2,5.6)

輸出:

7

11

10.2

執行時,調度程序創建一個新對象,該對象存儲方法的不同實現,並根據調用方法時傳遞的參數的類型和數量決定選擇的方法。 這種在 Python 中重載的方法更有效。

閱讀我們熱門的數據科學文章

數據科學職業道路:綜合職業指南 數據科學職業發展:工作的未來就在這裡 為什麼數據科學很重要? 數據科學為企業帶來價值的 8 種方式
數據科學對管理者的相關性 每個數據科學家都應該擁有的終極數據科學備忘單 成為數據科學家的 6 大理由
數據科學家生活中的一天:他們做什麼? 神話破滅:數據科學不需要編碼 商業智能與數據科學:有什麼區別?

結論

如果你想進入數據科學領域,Python 是一個很好的第一步。 要深入研究該主題,您可以查看高級在線認證課程,例如IIIT-Bangalore 與upGrad聯合舉辦的數據科學高管課程 該計劃涵蓋了該主題的重要方面,並為想要進一步提高技能的愛好者提供了許多額外的好處,如工作幫助、1:1 指導、在線支持、現場講座和可選的附加模塊。

Python中的函數和方法有什麼區別?

在 Python 中,有兩種​​函數:內置函數和用戶定義函數。 print() 和 len() 是內置函數的示例。 python中的用戶定義函數是我們可以定義自己以在典型程序中多次執行特定任務的函數。 方法就像一個函數,只是方法屬於一個類並且只能在一個對像上調用。 (語法:obj.method())

我如何在 Python 和 R 之間進行選擇?

Python 和 R 是用於數據科學的兩種頂級語言。 雖然使用什麼取決於幾個因素,例如您的目標公司、項目類型、客戶要求等,但通常,如果您是編程初學者,在構建大型應用程序的工程環境中工作,Python是一個很好的選擇。 另一方面,如果您有編程經驗並希望快速運行數據分析任務並使用漂亮的圖形可視化您的數據以在統計上做出更好的決策,那麼 R 是您的最佳選擇。

掌握數據科學需要多長時間?

每個人都有自己的學習節奏。 雖然,對於一個沒有編程經驗的初學者來說,你需要將近 6-7 個月的時間來鞏固你的基礎知識。 發布那個,這又取決於你練習了多少以及要從事的項目。 如果您遵循在線認證,您應該能夠在大約一年內掌握它。