1、描述
python中isinstance()函數,是python中的一個內置函數,用來判斷一個函數是否是一個已知的類型,類似type()。
2、語法
isinstance(object,classinfo)
參數:
object:實例對象
classinfo:可以是直接或者間接類名,基本類型,或者由它們組成的元組。
返回值:如果對象的類型與參數二的類型(classinfo)相同則返回True,否則返回False。
3、實例
以下是使用isinstance()函數的實例:
a=2
isinstance(a,int) #返回值為True
isinstance(a,str) #結果返回False
isinstance(a,(str,int,list)) #是元組中的一個,結果返回True
4、isinstance()與type()的區別
例如在繼承上的區別:
isinstance()會認為子類是一種父類類型,考慮繼承關系。
type()不會認為子類是一種父類類型,不考慮繼承關系。
實驗:
class A:
pass
class B(A):
pass
isinstance(A(),A) # return True
type(A()) == A # return True
isinstance(B(),A) # return True
Type(B()) == A # return False
我們發現,創建一個A對象,再創建一個繼承A對象的B對象,使用 isinstance() 和 type() 來比較 A() 和 A 時,由於它們的類型都是一樣的,所以都返回了 True。而B對象繼承於A對象,在使用isinstance()函數來比較 B() 和 A 時,由於考慮了繼承關系,所以返回了 True,使用 type() 函數來比較 B() 和 A 時,不會考慮 B() 繼承自哪里,所以返回了 False。
如果要判斷兩個類型是否相同,則推薦使用isinstance()。
