????????super() 是一个内置函数,用于获取当前类的父类。它的主要作用是在子类中调用父类的方法,让你能够在子类中扩展或重写父类的功能。
????????在 Python 中,如果一个类继承自另一个类,子类可以使用 super() 来调用父类的方法。这对于确保继承链中各个类的正确初始化非常有用。
????????具体来说,super() 的使用有两个主要方面:
一、调用父类的构造函数: 在子类的 __init__ 方法中使用 super().__init__(...) 可以调用父类的构造函数,确保父类的初始化逻辑得以执行。这对于子类扩展父类的功能非常有用。
class Parent:
def __init__(self, name):
self.name = name
class Child(Parent):
def __init__(self, name, additional_info):
super().__init__(name) # 调用父类的构造函数
self.additional_info = additional_info
# 创建 Child 实例
child_instance = Child(name="Alice", additional_info="Extra information")
# 打印子类实例的属性
print(f"Name: {child_instance.name}")
print(f"Additional Info: {child_instance.additional_info}")
Name: Alice
Additional Info: Extra information
????????在这个例子中,Child 类继承自 Parent 类。通过使用 super().__init__(name) 在子类的构造函数中调用父类的构造函数,确保了父类 Parent 的初始化逻辑被执行。然后,我们创建了 Child 类的实例,并打印了实例的属性,包括从父类继承的 name 属性和子类自己的 additional_info 属性。
二、调用父类的方法: 在子类中,可以使用 super() 来调用父类的方法,例如在子类中扩展或修改父类的某个方法。
class Animal:
def speak(self):
print("Generic animal sound")
class Dog(Animal):
def speak(self):
super().speak() # 调用父类的 speak 方法
print("Woof! Woof!")
# 创建 Dog 实例
my_dog = Dog()
# 调用 Dog 实例的 speak 方法
my_dog.speak()
Generic animal sound
Woof! Woof!
????????在这个例子中,Animal 类有一个 speak 方法,表示通用的动物声音。然后,Dog 类继承自 Animal 类,并重写了 speak 方法。通过使用 super().speak() 在子类的方法中调用父类的方法,确保了父类 Animal 的 speak 方法被执行。我们创建了 Dog 类的实例,并调用了其 speak 方法,打印了父类和子类的声音。