Python 多建構函式

Muhammad Maisam Abbas 2023年10月10日
  1. Python 中的建構函式
  2. Python 中的多個建構函式
Python 多建構函式

本教程將討論建構函式和處理 Python 中多個建構函式需求的方法。

Python 中的建構函式

在 Java、C++ 和 C# 程式語言等程式語言中,我們有建構函式的概念,該函式僅在類的物件被初始化時執行。建構函式用於初始化所有類屬性。此建構函式的名稱與類的名稱相同。建構函式的概念在 Python 中是相同的,但是對於所有類,建構函式的名稱都是 __init__()。Python 中的建構函式總是接受一個引數,即指向呼叫物件的指標。下面的程式碼片段展示了我們如何在 Python 中建立一個非引數化的建構函式。

class Person:
    def __init__(self):
        print("Constructor Function")


if __name__ == "__main__":
    p1 = Person()

輸出:

Constructor Function

我們為 Person 類建立了一個非引數化的建構函式,並在 main 函式中建立了一個 Person 類物件。當我們使用 p1 = Person() 建立物件時,會呼叫建構函式。

Python 中的多個建構函式

在 Java、C# 和 C++ 程式語言中,有一個稱為多建構函式的概念,我們可以根據需要為單個類建立任意數量的建構函式。不幸的是,我們無法在 Python 中為單個類定義多個建構函式。解決此限制的一般方法是使用預設引數建構函式。如果在建立類物件時沒有傳遞引數,預設引數建構函式會自動為其類屬性分配一個值。如果在物件建立期間指定了某個值,則預設引數建構函式將指定的值分配給類屬性。以下程式碼片段顯示瞭如何在 Python 中使用預設引數建構函式消除對多個建構函式的需求。

class Person:
    def __init__(self, name="Tom"):
        self.name = name

    def show(self):
        print("Name = ", self.name)


if __name__ == "__main__":
    p1 = Person()
    p2 = Person("Mark")
    p1.show()
    p2.show()

輸出:

Name =  Tom
Name =  Mark

我們通過在函式定義時指定預設值,在上面的程式碼中建立了一個預設引數建構函式。Person 類的建構函式接受一個引數名稱並將其分配給類引數 name。引數名稱的預設值為 Tom。我們在主函式中建立了 Person 類的兩個物件 p1p2。物件 p1 在初始化時沒有指定任何值;物件 p2Mark 作為建構函式引數傳遞。然後我們用 p1p2 呼叫了 show() 函式。show() 函式顯示 name 屬性的值。當 p1 呼叫 show() 函式時,輸出是預設值 Name = Tom,但是當 p2 呼叫 show() 函式時,輸出是 Name = Mark,因為我們指定在建立物件 p2 時標記 Mark

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

相關文章 - Python Constructor