super 是干嘛用的?在 Python2 和 Python3 使用,有什么区别?为什么要使用 super?请举例说明
时间: 2024-05-12 07:15:21 浏览: 61
super() 函数是用来调用父类(超类)的方法,它可以帮助我们在子类中调用父类的属性和方法。在 Python2 和 Python3 中,使用方式相同,但 Python2 中需要显示地传递当前类和实例作为参数,而 Python3 中则可以省略这两个参数。
使用 super() 的好处在于:
1. 避免硬编码父类名称,使代码更加灵活。
2. 确保在多重继承中方法只被调用一次。
下面是一个使用 super() 的例子:
```python
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
print("Animal speaks")
class Dog(Animal):
def __init__(self, name):
super().__init__(name)
def speak(self):
super().speak() # 调用父类的方法
print("Dog barks")
dog = Dog("Buddy")
dog.speak()
```
输出结果为:
```
Animal speaks
Dog barks
```
在这个例子中,我们创建了一个 Animal 类和一个继承自 Animal 的 Dog 类。在 Dog 类的构造函数中,我们使用 super() 来调用父类的构造函数,以获取 Animal 类中定义的 name 属性。在 Dog 类的 speak() 方法中,我们使用 super() 来调用父类的 speak() 方法,以确保 Animal 类中的 speak() 方法只被调用一次。
阅读全文