[英]Python 3: Returning a new child class instance from an inherited method, when child constructor has more arguments than parent constructor
[英]Method resolution order in Python - in absence of constructor in child and parent left class
這與Python中的方法解析順序有關。 假設我們有3個類別:A,B,C。
C(A,B)-多重繼承。
在子類C和父類A缺少構造函數的情況下,python引擎是否從RHS類B中查找構造函數並執行(如果存在),或者看A是否具有任何父類,構造函數?
示例:如果類A繼承自具有構造函數的類X,該怎么辦? 然后,將運行X類的構造函數還是B類的構造函數?
class A:
pass
class B:
def __init__(self):
print("I am class B")
class C(A, B):
pass
print(C())
I am class B
通過另一個示例,您將更好地理解多重繼承的工作方式:
class A:
def __init__(self):
print("I am class A")
class B:
def __init__(self):
print("I am class B")
class C(A, B):
pass
print(C())
I am class A
如您所見,沒有調用B __init__
,這是因為從左到右調用了父類,但是每個類都不要忘記調用“ super init”,否則會破壞繼承鏈。
class A:
def __init__(self):
print("I am class A")
super().__init__()
class B:
def __init__(self):
print("I am class B")
class C(A, B):
pass
print(C())
I am class A
I am class B
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.