版本
E:\Projects\testTool>python --version
Python 3.6.2
定義
先看下官網(wǎng)是如何定義isinstance函數(shù)的。
isinstance(object, classinfo)
Reuturn true if the object argument is an instance of the classinfo argument, or of a (direct, indirect or virtual) subclass thereof. If object is not an object of the given type, the function always returns false. If classinfo is a tuple of type objects (or recursively, other such tuples), return true if object is an instance of any of the types. If classinfo is not a type or tuple of types and such tuples, a TypeError exception is a raised.
大致翻譯一下:
如果object參數(shù)是classinfo參數(shù)的實(shí)例秦踪,或者object參數(shù)是classinfo的直接或間接或虛擬子類實(shí)例懂鸵,函數(shù)則返回True, 反之返回False卒煞。 如果classinfo參數(shù)是一個(gè)包含多個(gè)類的元組痪宰,只要對(duì)象是元組中某一類的實(shí)例,同樣返回True, 如果classinfo參數(shù)不是一個(gè)類,函數(shù)則會(huì)拋出TypeError錯(cuò)誤衣撬。
總而言之乖订,這就是判斷對(duì)象是否是一個(gè)已知的類型
示例
1.obeject參數(shù)是classinfo參數(shù)的實(shí)例
>>> a = 8
>>> isinstance(a, int)
2.obeject參數(shù)是classinfo參數(shù)的實(shí)例,并且classinfo是一個(gè)元組
返回True:
>>> a = 8
>>> isinstance(a, (int, str, list))
True
返回:False
>>> a = 8
>>> isinstance(a, (str, list, dict))
False
3.object參數(shù)是繼承自classinfo參數(shù)
>>> isinstance(int, type)
True
>>> class A:
... pass
...
>>> class B(A):
... pass
...
>>> class C(B):
... pass
...
>>> isinstance(B(), A)
True
>>> isinstance(C(), A)
True
>>> isinstance(A, object)
True
>>> isinstance(A(), A)
True