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
類的兩個物件 p1
和 p2
。物件 p1
在初始化時沒有指定任何值;物件 p2
將 Mark
作為建構函式引數傳遞。然後我們用 p1
和 p2
呼叫了 show()
函式。show()
函式顯示 name
屬性的值。當 p1
呼叫 show()
函式時,輸出是預設值 Name = Tom
,但是當 p2
呼叫 show()
函式時,輸出是 Name = Mark
,因為我們指定在建立物件 p2
時標記 Mark
。
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