python學習之isinstance與type的區別

曼曼的青蘿發表於2018-06-07

isinstance() 語法:

isinstance(object, classinfo)

其中,object 是變數,classinfo 是型別即 (tuple,dict,int,float,list,bool等) 和 class類

若引數 object 是 classinfo 類的例項,或者 object 是 classinfo 類的子類的一個例項, 返回 True。
若 object 不是一個給定型別的的物件, 則返回結果總是False。
若 classinfo 不是一種資料型別或者由資料型別構成的元組,將引發一個 TypeError 異常

type()語法:

type() #只接受一個引數

可以得到未知變數所屬的型別

相同點:

都可以判斷變數是否某個內建型別

>>> type({'s'})
<class 'set'>
>>> isinstance(3, int)
True
>>> type(3) is int
True
>>> isinstance(123, str)
False
>>> type(123) is str
False
>>> isinstance('abf', (str, float, int))
True

不同點:

isinstance可以用來判斷繼承關係,即子類物件是否繼承於父類

>>> class father(object):
...     pass
...
>>> class son(father):
...     pass
...
>>> isinstance(son(), father)
True
>>> type(son()) is father
False

總結:

使用場景不同,type主要用於獲取未知變數的型別,而instance用於繼承關係的判斷




參考文件:
https://blog.csdn.net/cn_wk/article/details/51314238
https://blog.csdn.net/xsj_blog/article/details/53369653

相關文章