1 回答

TA贡献1869条经验 获得超4个赞
所有__init__函数都需要调用super().__init__(),如下所示:
class A:
def __init__(self):
super().__init__()
print("in A Init")
class B:
def __init__(self):
super().__init__()
print("in B Init")
class C(B, A):
def __init__(self):
super().__init__()
print("in C Init")
c_obj= C()
当您调用它时,您会得到以下输出:
in A Init
in B Init
in C Init
根据super()函数文档,它返回对类的“父级或兄弟级”的引用,以方法解析顺序中的下一个为准。在层次结构的顶部,它返回对隐式父类的引用object,它有一个__init__什么都不做的空方法。
为了使其正常工作,最好所有继承的__init__函数都具有相同的签名,包括公共基类;在这种情况下,签名只是__init__(self)(没有额外的参数),而公共基类是object,它也__init__(self)没有额外的参数,所以这一切都很好。另一种常见模式是它们都采用关键字参数并传递**kwargs给下一个参数。
添加回答
举报