在Python中,当子类继承父类时,子类的 `__init__` 方法默认会覆盖父类的 `__init__` 方法。如果子类想要调用父类的 `__init__` 方法来初始化父类的属性,可以使用 `super().__init__()` 语句。下面是一个简单的例子:
python
class Base:
def __init__(self):
print("Base.__init__")
class A(Base):
def __init__(self):
super().__init__() 调用父类的__init__方法
print("A.__init__")
class B(A):
def __init__(self):
super().__init__() 调用父类A的__init__方法
print("B.__init__")
class C(A, B):
def __init__(self):
super().__init__() 调用父类A和B的__init__方法
print("C.__init__")
c = C()
输出将会是:
Base.__init__
A.__init__
B.__init__
C.__init__
在这个例子中,`C` 类通过 `super().__init__()` 调用了 `A` 类和 `B` 类的 `__init__` 方法,确保了父类的属性被正确初始化。如果你不调用 `super().__init__()`,父类的 `__init__` 方法将不会被调用,父类的属性也就不会被初始化。
需要注意的是,`super()` 函数调用的是方法解析顺序(MRO)中父类的方法,Python 3中默认的MRO保证了父类的 `__init__` 方法会被调用。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://sigusoft.com/bj/68038.html