python,super
时间: 2023-10-17 07:12:21 浏览: 87
python类中super()和__init__()的区别
在 Python 中,`super()` 是一个内置函数,用于调用父类的方法。它的主要作用是在子类中调用父类的方法,以便在子类中重写方法时可以保留父类的行为。
`super()` 函数接受两个参数,第一个参数是当前子类的类名,第二个参数是当前实例对象。例如:
```python
class Parent:
def __init__(self):
self.parent_attr = 'parent attribute'
def parent_method(self):
print('Parent method called')
class Child(Parent):
def __init__(self):
super().__init__()
self.child_attr = 'child attribute'
def child_method(self):
print('Child method called')
child = Child()
child.child_method()
child.parent_method()
```
在这个例子中,`Child` 继承自 `Parent`,并且重写了构造函数 `__init__()`。在子类的构造函数中,我们使用 `super().__init__()` 调用父类的构造函数,以便在子类中保留父类的属性。同样,在子类的方法 `child_method()` 中,我们只是调用子类自己的方法。最后,我们创建了 `Child` 类的实例,并分别调用了 `child_method()` 和 `parent_method()`。
输出结果:
```
Child method called
Parent method called
```
需要注意的是,`super()` 只能用于新式类(即继承自 `object` 的类),旧式类不支持 `super()`。此外,`super()` 并不是必需的,有时候可以直接使用父类的类名进行调用。
阅读全文