Python中isinstance和type的區別

2021-10-07 09:32:16 字數 956 閱讀 8726

一、先來看一段**(以下內容都是基於此**進行展開)

classa:

pass

class

b(a)

:pass

b = b(

)print

(isinstance

(b,b)

)#true

print

(isinstance

(b,a)

)# true

在呼叫isinstance方法時,會根據繼承關係,自動找到乙個繼承鏈,而例項化的物件b本身肯定是乙個b型別的物件,而物件b(類)又繼承了物件a(類),所以物件b又是乙個a型別的物件。

二、對於type函式

b = b(

)print

(type

(b))

# print

(type

(b))

#

三、用type函式做判斷
print

(type

(b)is b)

# true

type(b)指向的是物件b(類),所以type(b) is b會返回true

print

(type

(b)is a)

# false

因為type(b)已經指向了物件b(類),雖然b繼承了a,但實際上它們是兩個不同的物件,有著不同的id

補充知識——is==的區別

參考部落格

小節

python中type和isinstance的使用

a1 1,2 print type a1 class a 建立乙個空類 pass 代表空行,讓編譯器不報錯 a a 建立乙個物件 print type a class b a 建立乙個類b,繼承自類a pass 空行,沒有實際意義,僅僅讓編譯器不報錯 b b 建立乙個類b的物件 print type...

Python中type和isinstance的區別

在python中,我們經常通過type和isinstance來判斷某個物件的型別,下面我們通過乙個簡單的例子來分析2個方法的區別 class animal object def init self,name self.name name class dog animal def init self,...

python的type和isinstance的區別

type可以獲取乙個物件的型別,isinstance可以判斷乙個物件是否是某個型別。但是最大的區別是 isinstance會認為子類是一種父類型別 比如如下 isinstance 會認為子類是一種父類型別 coding utf 8 class basecls pass class testcls b...