“super”和显式超类 __init__() 之间的区别是什么?
在 Python 中,super 关键字提供了一种便捷的方法访问父类的方法。让我们探讨一下它的用法,并将其与显式调用父类 __init__ 方法进行对比。
显式父类初始化
class Child(SomeBaseClass): def __init__(self): SomeBaseClass.__init__(self)
这种形式的继承显式调用父类 SomeBaseClass 的 __init__ 方法。它将子类与特定的父类紧密耦合,并假设父类的 __init__ 方法始终存在。
'super' 初始化
class Child(SomeBaseClass): def __init__(self): super().__init__()
super 关键字允许以获得更灵活的初始化过程。它确保调用方法解析顺序 (MRO) 中子类后面的父类的 __init__ 方法。这使得可以在不影响子类初始化的情况下进行多重继承或添加额外的基类。
Python 2 与 Python 3
在 Python 2 中,以下语法使用 super 是不同的:
super(Child, self).__init__()
但是,在 Python 3 中,这可以简化to:
super().__init__()
使用“super”的优点
结论
虽然显式 SomeBaseClass.__init__(self) 调用在简单继承中可能就足够了在更复杂的类层次结构中,它可能会受到限制。 super 关键字提供了更大的灵活性、前向兼容性以及对依赖项注入的支持。因此,建议使用 super 来初始化父类,因为它可以增强代码的可维护性和可重用性。
以上是Python 继承:`super()` 和显式超类 `__init__()` 调用之间有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!