在 Python 中呼叫父類的超級建構函式
Vaibhav Vaibhav
2022年5月17日
繼承是電腦科學中物件導向程式設計的一個強大概念,它可以幫助我們避免編寫冗餘程式碼,並且與程式設計的黃金 DRY 規則(不要重複自己)相得益彰。使用繼承,一個類可以繼承另一個類的所有屬性和功能。繼承功能的類是父類,繼承功能的類是子類。
繼承幫助程式設計師和開發人員編寫可擴充套件、可重用和可維護的程式碼,從而提高生產力和效率。
要繼承所有的屬性和方法,我們必須從子類執行父類的建構函式。在本文中,我們將學習如何在 Python 中呼叫父類的超級建構函式。
在 Python 中呼叫父類的超級建構函式
在子類的建構函式中呼叫父類的建構函式或超建構函式。相同的語法如下。
super().__init__(*args, **kwargs)
父類所需的所有引數都在 __init__()
方法中傳遞。在上述語法中,*args, **kwargs
涵蓋了所有引數,但也可以單獨提及所有引數,如下所示。
super().__init__(argument1, argument2, argument3, ...)
現在我們已經完成了理論,讓我們實際理解這個概念。請參閱以下 Python 程式碼以瞭解繼承的概念以及如何呼叫超級建構函式。
class Person:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
def get_name(self):
return self.name
def set_name(self, name):
if isinstance(name, str):
self.name = name
def get_age(self):
return self.age
def set_age(self, age):
if isinstance(age, int):
self.age = age
def get_gender(self):
return self.gender
def set_gender(self, gender):
if isinstance(gender, str):
self.gender = gender
class Student(Person):
def __init__(self, name, age, gender, roll_number):
super().__init__(name, age, gender) # Important
self.roll_number = roll_number
def get_roll_number(self):
return self.roll_number
def set_roll_number(self, roll_number):
if isinstance(roll_number, int):
self.roll_number = roll_number
adam = Student("Adam", 21, "M", 5)
emma = Student("Emma", 23, "F", 18)
print("Name:", adam.get_name())
print("Age:", adam.get_age())
print("Gender:", adam.get_gender())
print("Roll Number:", adam.get_roll_number())
print()
print("Name:", emma.get_name())
print("Age:", emma.get_age())
print("Gender:", emma.get_gender())
print("Roll Number:", emma.get_roll_number())
輸出:
Name: Adam
Age: 21
Gender: M
Roll Number: 5
Name: Emma
Age: 23
Gender: F
Roll Number: 18
Person
類是父類,Student
類是子類。父類和子類的所有屬性都有 setter 和 getter。子類繼承父類的所有屬性和方法。這條語句 super().__init__(name, age, gender)
呼叫了 Person
類的建構函式。注意需要呼叫父類的建構函式;否則,程式碼將中斷。
作者: Vaibhav Vaibhav