super().__init__()理解(三)

  • D 的类的顺序的是[D,B,A,C]
  • 继承父类的的__init__方法在在类A中已经到终点,
    A.mro()
    Out[368]: [main.A, object],所以C不再执行
class A:
	def __init__(self):
		print('A')
       
class B(A):
	def __init__(self):
		print('B')
		super().__init__()
class C:
	def __init__(self):
		print('C')
		super().__init__()
class D(B,C):
	def __init__(self):
		print('D')
		super().__init__()
d = D()

print(D.mro())
D
B
A
[, , , , ]

super().__init__()理解(三)_第1张图片

  • 很简单当我们转换B,C的位置,类继承的顺序是[D,C,B,A],因为C中有
    super().init(),指向B,我们看到 都执行了
class A:
	def __init__(self):
		print('A')
       
class B(A):
	def __init__(self):
		print('B')
		super().__init__()
class C:
	def __init__(self):
		print('C')
		super().__init__()
class D(C,B):
	def __init__(self):
		print('D')
		super().__init__()
d = D()

print(D.mro())
D
C
B
A
[, , , , ]

你可能感兴趣的:(面向对象)