Class Initialization
本问题已经有最佳答案,请猛点这里访问。
关于初始化,我只有一个小问题。在Python中,当我们执行乘法继承时,调用子类的超级函数和分别调用它们之间有什么区别?
1 2 3 4 5 6 7 8 | classA(B,C) super(A,self).__init__() #---and---# B.__init__(self) C.__init__(self) |
谢谢
主要的区别是,如果B类和C类有一个共同的祖先,用
您可以从guido的解释中了解到
下面演示了对父母的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | >>> class A(object): ... def __init__(self): ... print"A" ... >>> class B(A): ... def __init__(self): ... A.__init__(self) ... print"B" ... >>> class C(A): ... def __init__(self): ... A.__init__(self) ... print"C" ... >>> class D(B,C): ... def __init__(self): ... B.__init__(self) ... C.__init__(self) ... print"D" ... >>> D() A B A C D <__main__.D object at 0x106de1d10> >>> |
这就是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | >>> class A(object): ... def __init__(self): ... print"A" ... >>> class B(A): ... def __init__(self): ... super(B,self).__init__() ... print"B" ... >>> class C(A): ... def __init__(self): ... super(C,self).__init__() ... print"C" ... >>> class D(B,C): ... def __init__(self): ... super(D,self).__init__() ... print"D" ... >>> D() A C B D <__main__.D object at 0x10d34ec90> >>> |