python學習之isinstance與type的區別
阿新 • • 發佈:2019-02-11
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用於繼承關係的判斷