📅  最后修改于: 2023-12-03 15:24:34.106000             🧑  作者: Mango
在Python中,一个子类(派生类)可以继承超类(父类)的属性和方法。当创建一个子类对象时,它会首先调用超类的构造函数。但有时需要自定义子类的构造函数,同时又需要调用超类的构造函数,以确保继承了超类的属性。本文将介绍如何在Python两个类中调用超类构造函数。
在Python中,调用超类构造函数的方法是使用Python内置的super()
函数。这个函数返回的是一个父类的对象,以此可以调用父类的属性和方法。
在子类中使用super()
函数语法如下:
super().__init__()
这将调用超类的构造函数,并使用超类的属性来初始化子类对象。在子类中使用超类的方法语法如下:
super().method_name()
这将调用超类中的method_name
方法并返回方法的结果。
在下面的示例程序中,我们将创建一个超类Person
,它有三个属性name
, age
和gender
。然后我们将创建一个Student
类,它继承了Person
类,并添加了一个新属性student_id
。在Student
类的构造函数中,我们将使用super()
函数来调用超类中的构造函数,并初始化子类的属性。
class Person:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
def display_profile(self):
print("Name:", self.name)
print("Age:", self.age)
print("Gender:", self.gender)
class Student(Person):
def __init__(self, name, age, gender, student_id):
super().__init__(name, age, gender)
self.student_id = student_id
def display_profile(self):
super().display_profile()
print("Student ID:", self.student_id)
s = Student("John Doe", 20, "Male", "123456")
s.display_profile()
输出结果为:
Name: John Doe
Age: 20
Gender: Male
Student ID: 123456
在上面的示例程序中,我们定义了两个类Person
和Student
。Person
类是超类,它有三个属性name
, age
和gender
,以及一个方法display_profile()
,用于显示个人资料信息。Student
类是子类,它继承了Person
类,并添加了一个新属性student_id
。在Student
类的构造函数中,我们使用super()
函数调用Person
类的构造函数,并使用超类的属性来初始化子类对象。在Student
类中,我们还覆盖了Person
类的display_profile()
方法,以添加Student
类的特殊属性student_id
。最后,我们创建了一个Student
类的对象s
,并调用s.display_profile()
方法以显示个人资料信息。
在Python中,使用super()
函数调用超类的构造函数是一个很好的实践。它可以确保继承了超类的所有属性,并将子类的构造函数与超类的构造函数分开,以实现更好的代码复用。