一、先來看一段**(以下內容都是基於此**進行展開)
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...