1. 描述
Python中的 isinstance() 函數,是Python中的一個內置函數,用來判斷一個函數是否是一個已知的類型,類似 type()。
2. 語法
isinstance(object,classinfo)
1
參數:
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) # returns True
type(A()) == A # returns True
isinstance(B(), A) # returns True
type(B()) == A # returns False
我們發現,創建一個A對象,再創建一個繼承A對象的B對象,使用 isinstance() 和 type() 來比較 A() 和 A 時,由於它們的類型都是一樣的,所以都返回了 True。而B對象繼承於A對象,在使用isinstance()函數來比較 B() 和 A 時,由於考慮了繼承關系,所以返回了 True,使用 type() 函數來比較 B() 和 A 時,不會考慮 B() 繼承自哪里,所以返回了 False。
如果要判斷兩個類型是否相同,則推薦使用isinstance()。
---------------------
作者:飛鳥逐岸
來源:CSDN
原文:https://blog.csdn.net/HS_blog/article/details/81396664
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
