在 Python 中,我們可以通過(guò)內(nèi)置函數(shù)issubclass
來(lái)查詢一個(gè)類是否為另一個(gè)類的子類。該函數(shù)接受兩個(gè)參數(shù),第一個(gè)參數(shù)用于指定待查詢的類,第二個(gè)參數(shù)用于指定可能的父類。
class A: pass class B(A): pass class C(A): pass print(issubclass(B, A)) # True print(issubclass(C, B)) # False
在上面的代碼中,我們定義了三個(gè)類 A、B 和 C,其中 B 和 C 都是 A 的子類。我們可以以 B 和 C 為基礎(chǔ)來(lái)應(yīng)用issubclass
函數(shù)進(jìn)行查詢。
值得注意的是,查詢結(jié)果也可以反過(guò)來(lái)查詢,即查詢是否為一個(gè)類的子類。為此,我們可以用內(nèi)置函數(shù)type
獲取一個(gè)類的類型信息,然后利用issubclass
查詢指定類是否為該類型信息的子類。
class A: pass class B(A): pass b = B() print(issubclass(type(b), A)) # True print(issubclass(type(b), B)) # True print(issubclass(type(b), object)) # True
在上面的代碼中,我們創(chuàng)建了一個(gè) B 的實(shí)例 b,并利用type
獲取其類型信息。然后,我們通過(guò)issubclass
函數(shù)查詢指定的類是否為其類型信息的子類。當(dāng)然,由于所有類都是object
的子類,因此最后一個(gè)查詢結(jié)果總是為 True。