我很好奇为什么这段代码:
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)