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 中文站