具有多重继承的__init__的Python行为

时间:2018-04-13 12:00:11

标签: python inheritance multiple-inheritance

我很好奇为什么这段代码:

class BaseClassA(object):
    def __init__(self):
        print('A1')
        # super().__init__()
        print('A2')

class BaseClassB(object):
    def __init__(self):
        print('B1')
        # super().__init__()
        print('B2')

class ChildClass(BaseClassA, BaseClassB):
    pass

c = ChildClass()

打印:

A1
A2

而不是(正如我所料):

A1
A2
B1
B2

现在,如果你从超类中取消注释包含对__init __()的调用的那两行,你将得到:

A1
B1
B2
A2

对我来说,似乎就像从BaseClassA调用的super().__ init __()从BaseClassB调用__init __()。你能解释一下这种奇怪的行为吗?

编辑: 我看到了this的问题,但我仍然不知道为什么一个基类(A)的__init__方法会影响来自另一个基类的调用__init__(B)

0 个答案:

没有答案