经常看到python的类下面会有super()什么意思
时间: 2024-03-21 15:37:35 浏览: 18
`super()`是一个内置函数,用于调用父类(超类)中的方法。在Python中,如果一个类继承自另一个类,那么它可以通过调用`super()`方法来访问父类中的方法和属性。
`super()`的主要作用是在多重继承中协调各个父类的方法调用顺序。在多重继承中,一个类可能同时继承自多个父类,而这些父类之间可能存在方法名相同的情况。为了避免方法名冲突,Python使用了一种名为“方法解析顺序(MRO)”的算法,来决定各个父类中同名方法的调用顺序。`super()`方法就是基于这个算法来实现的。
例如,假设我们有一个类`Child`,它继承自两个父类`Parent1`和`Parent2`,并且这两个父类都有一个名为`method`的方法。如果我们在`Child`类中想要调用`Parent1`中的`method`方法,可以使用`super()`方法来实现:
```python
class Parent1:
def method(self):
print("Parent1 method")
class Parent2:
def method(self):
print("Parent2 method")
class Child(Parent1, Parent2):
def method(self):
super().method() # 调用 Parent1 中的 method 方法
child = Child()
child.method() # 输出 "Parent1 method"
```
在上面的代码中,`Child`类继承自`Parent1`和`Parent2`类,并且重写了`method`方法。在`Child`类中,我们通过调用`super()`方法来访问`Parent1`父类中的`method`方法,从而实现了方法的调用。
需要注意的是,`super()`方法只能用于调用父类中的方法和属性,而不能直接用于创建父类的对象。此外,`super()`方法的调用顺序是按照方法解析顺序(MRO)来确定的,这个顺序可以通过`__mro__`属性来查看。