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
[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.A'>, <class '__main__.C'>, <class 'object'>]

在這裏插入圖片描述

  • 很簡單當我們轉換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
[<class '__main__.D'>, <class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章