class Animal:
    def __init__(self, name):
        self.name = name
        print(f"Animal {name} is initialized.")
    def speak(self):
        print(f"{self.name} makes a sound.")
class Dog(Animal):
    def __init__(self, name, breed):
        super().__init__(name)  # 调用父类的构造函数
        self.breed = breed
        print(f"Dog {name} of breed {breed} is initialized.")
    def speak(self):
        super().speak()  # 调用父类的方法
        print(f"{self.name} barks.")
# 创建对象并调用方法
dog = Dog("Buddy", "Golden Retriever")
dog.speak()super() 的作用:super() 函数用于调用父类(基类)的方法。在子类中,使用 super() 可以避免显式地指定父类名称,并且可以确保方法解析顺序(MRO, Method Resolution Order)正确。
构造函数中的 super():在 Dog 类的构造函数中,super().__init__(name) 调用了父类 Animal 的构造函数,确保父类的初始化逻辑被执行。
方法中的 super():在 Dog 类的 speak 方法中,super().speak() 调用了父类 Animal 的 speak 方法,然后再执行子类特有的行为(即狗会叫)。
输出结果:
Dog 对象时,首先会调用 Animal 类的构造函数,然后是 Dog 类的构造函数。speak 方法时,先执行父类的 speak 方法,再执行子类的扩展行为。上一篇:用python编写斐波那契数列
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站