簡體   English   中英

Python中的方法解析順序-子級和父級左類中沒有構造函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM