super 是干嘛用的?在 Python2 和 Python3 使用,有什么区别?为什么要使用 super?
本帖最后由 测试积点老人 于 2023-8-2 09:27 编辑回复可见
**** Hidden Message *****
有区别吗? super 用于继承父类的方法、属性。
super 是新式类中才有的,所以 Python2 中使用时,要在类名的参数中写 Object。 Python3 默认是新式类,不用写,直接可用。
使用 super 可以提高代码的复用性、可维护性。修改代码时,只需修改一处。 学习下 继承 在 Python 中,`super()` 是一个特殊的函数,用于调用父类的方法。它在 Python 2 和 Python 3 中的用法是相同的,但在 Python 3 中使用更加推荐,因为 Python 3 对类的继承和方法解析做了一些改进。
在 Python 中,当一个类继承自另一个类时,子类可以重写父类的方法。然而,有时候我们希望在子类中调用父类的方法,并且这样的调用可能会涉及多重继承时的复杂情况。这时候就可以使用 `super()` 函数来实现。
使用 `super()` 有以下优点和目的:
1. 显式调用父类方法:`super()` 允许你在子类中显式地调用父类的方法,而不需要直接指定父类的名字。这样使代码更具可读性和维护性。
2. 支持多重继承:当子类继承多个父类时,`super()` 会根据方法解析顺序 (Method Resolution Order, MRO) 找到正确的下一个类,从而实现在多重继承中正确地调用父类的方法。
在 Python 2 中,`super()` 需要两个参数:子类的类名和子类对象实例。例如:
<p>```python</p><p>class Parent(object):</p><p> def __init__(self):</p><p> pass</p><p>
</p><p>class Child(Parent):</p><p> def __init__(self):</p><p> super(Child, self).__init__()</p><p>```</p>
而在 Python 3 中,你可以省略这些参数,直接使用 `super()` 即可:
<p>```python</p><p>class Parent:</p><p> def __init__(self):</p><p> pass</p><p>
</p><p>class Child(Parent):</p><p> def __init__(self):</p><p> super().__init__()</p><p>```</p>
注意在 Python 3 中不需要显式地继承 `object`,因为所有类都默认继承自 `object`。
总结:`super()` 在 Python 中用于调用父类的方法,提供了更好的多重继承支持,并使代码更具可读性和可维护性。在 Python 3 中,`super()` 使用更为简洁方便。
super 用于继承父类的方法、属性
页:
[1]