📜  如何在python两个类中调用超类构造函数 - Python(1)

📅  最后修改于: 2023-12-03 15:24:34.106000             🧑  作者: Mango

如何在Python两个类中调用超类构造函数

在Python中,一个子类(派生类)可以继承超类(父类)的属性和方法。当创建一个子类对象时,它会首先调用超类的构造函数。但有时需要自定义子类的构造函数,同时又需要调用超类的构造函数,以确保继承了超类的属性。本文将介绍如何在Python两个类中调用超类构造函数。

在Python中调用超类构造函数的方法

在Python中,调用超类构造函数的方法是使用Python内置的super()函数。这个函数返回的是一个父类的对象,以此可以调用父类的属性和方法。

在子类中使用super()函数语法如下:

super().__init__()

这将调用超类的构造函数,并使用超类的属性来初始化子类对象。在子类中使用超类的方法语法如下:

super().method_name()

这将调用超类中的method_name方法并返回方法的结果。

示例程序

在下面的示例程序中,我们将创建一个超类Person,它有三个属性name, agegender。然后我们将创建一个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

在上面的示例程序中,我们定义了两个类PersonStudentPerson类是超类,它有三个属性name, agegender,以及一个方法display_profile(),用于显示个人资料信息。Student类是子类,它继承了Person类,并添加了一个新属性student_id。在Student类的构造函数中,我们使用super()函数调用Person类的构造函数,并使用超类的属性来初始化子类对象。在Student类中,我们还覆盖了Person类的display_profile()方法,以添加Student类的特殊属性student_id。最后,我们创建了一个Student类的对象s,并调用s.display_profile()方法以显示个人资料信息。

结论

在Python中,使用super()函数调用超类的构造函数是一个很好的实践。它可以确保继承了超类的所有属性,并将子类的构造函数与超类的构造函数分开,以实现更好的代码复用。