Init函数在python中的多重继承中执行

我是 python 的新手,正在尝试了解 python 中的继承。Python 具有多重继承的特性。一个类可以同时继承多个类。当我们创建子类的对象时,会调用子类的init函数。我想调用子类的两个父类的 init 函数,但我只能调用一个 init 函数。我阅读了方法解析顺序的概念,最左边的类继承的 init 函数将被调用。请更正我的代码,以便调用两个父类的 init 函数。


class A:

    def __init__(self):

        print("in A Init")

    


class B:

    def __init__(self):

        print("in B Init")


    



class C(B,A):

    def __init__(self):

        super().__init__()

        print("in C Init")


cObj= C()


HUX布斯
浏览 107回答 1
1回答

MMTTMM

所有__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 Initin B Initin C Init根据super()函数文档,它返回对类的“父级或兄弟级”的引用,以方法解析顺序中的下一个为准。在层次结构的顶部,它返回对隐式父类的引用object,它有一个__init__什么都不做的空方法。为了使其正常工作,最好所有继承的__init__函数都具有相同的签名,包括公共基类;在这种情况下,签名只是__init__(self)(没有额外的参数),而公共基类是object,它也__init__(self)没有额外的参数,所以这一切都很好。另一种常见模式是它们都采用关键字参数并传递**kwargs给下一个参数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python