欢迎访问宙启技术站
智能推送

Python中使用super()方法实现父类方法的覆盖

发布时间:2023-12-16 23:48:33

在Python中,如果一个子类需要覆盖父类的方法,并且仍然需要调用父类的方法,可以使用super()方法来实现。

super()函数返回父类的一个实例。通过使用super()函数,我们可以在子类中调用父类的方法,而不需要指定父类的名称。

下面是一个使用super()方法实现父类方法的覆盖的例子:

class Animal:
    def __init__(self, name):
        self.name = name
    
    def speak(self):
        print(f"{self.name} is speaking.")

class Dog(Animal):
    def __init__(self, name):
        super().__init__(name)
    
    def speak(self):
        super().speak()  # 调用父类的speak()方法
        print(f"{self.name} is barking.")


dog = Dog("Tom")
dog.speak()

在这个例子中,我们定义了一个Animal类和一个Dog类,Dog类继承自Animal类。Animal类有一个speak()方法,用于输出动物正在说话的信息。在Dog类中,我们重写了speak()方法,并在里面使用super().speak()调用了父类的speak()方法。接下来,我们创建了一个Dog对象,并调用了speak()方法。

输出结果为:

Tom is speaking.
Tom is barking.

可以看到,虽然我们在子类中覆盖了父类的方法,但是通过使用super().speak()我们仍然能够调用父类Animal的speak()方法,保留了父类方法的功能。