为什么子级init方法中的super方法会调用每个父级的init方法?

时间:2019-06-29 13:43:49

标签: python python-3.x

我遇到了python中的代码。它具有4类A,B,C,D。 B和C类从A类继承。D类继承B,C。下面是我的问题

  1. 为什么类B中的super().__init__()会导致执行类C的init方法?

  2. 为什么类B中的super().__init__()在以下情况下不调用类A的init方法 super().__init__()在C类中缺席吗?

  3. 为什么只有在类B和C的init方法中都包含super().__init__()时,才执行类A的init方法?

  4. 为什么当类B和C的init方法都具有super().__init__()时,为什么要在类A的init方法之前调用类C的init方法?

我尝试在Internet上搜索,但找不到任何答案。请帮助我

问题1的代码

class A:
    def __init__(self):
        print("A")

class B(A):
    def __init__(self):
        print("B")
        super().__init__()

class C(A):
    def __init__(self):
        print("C")      

class D(B, C):
    def __init__(self):
        print("D")
        super().__init__()

d = D()

问题2的代码

    class A:
        def __init__(self):
            print("A")

    class B(A):
        def __init__(self):
            print("B")
            super().__init__()

    class C(A):
        def __init__(self):
            print("C")      

    class D(B, C):
        def __init__(self):
            print("D")
            super().__init__()

    d = D()

问题3的代码

    class A:
        def __init__(self):
            print("A")

    class B(A):
        def __init__(self):
            print("B")
            super().__init__()

    class C(A):
        def __init__(self):
            print("C")
            super().__init__()      

    class D(B, C):
        def __init__(self):
            print("D")
            super().__init__()

    d = D()

问题4的代码与问题3的代码相同。

我希望问题4的答案是

D
B
A

0 个答案:

没有答案