一、isinstance函数
作用:判断一个对象是某个类或子类的实例。
语法:isinstance(object, classinfo)。
参数:
object:实例对象。
classinfo:可以是直接或间接类名、基本类型或者由它们组成的元组。
对于基本类型来说 classinfo 可以是:int,float,bool,complex,str(字符串),list,dict(字典),set,tuple
返回值: 如果对象的类型与参数二的类型(classinfo)相同则返回 True,否则返回 False。
具体的:
**(1)第二个参数类型是一个元组
当第二个参数只有一个单独的类型,对象的类型与参数二的类型相同则返回True;
若第二个参数为一个元组类型,则若对象类型与元组中类型名之一相同即返回True。**
# coding=UTF-8
>>> a = 4
>>> isinstance (a,int)
True
>>> isinstance (a,str)
False
>>> isinstance (a,(str,int,list))#与元组类型之一相同
True
>>> isinstance(a,(str,list,float))#与元组类型都不相同
False`
(2)当第二个参数是class时 # coding=UTF-8 class A(object): pass >>>a=A() >>>isinstance(a,A) True
二.type
语法:type(object)--类型
作用:得到传入的object的类型
三.比较
1.共同点
type和isinstance都可以判断变量是否属于某个内建类型
2.不同点
(1)type只接收一个参数, 不但可以判断变量是否属于某个类型,而且可以得到参数变量未知的所属的类型;
而isinstance只能判断是否属于某个已知类型,不能直接得到变量未知的所属的类型
# coding=UTF-8
class A(object):
pass
>>>a=A()
#type判断变量是否属于某个类型
>>>type(a)==A
True
#type得到变量类型
>>>type(a)
__main__.A
#isinstance只能判断变量是否属于某个类型
>>>isinstance(a,A)
True
(2)isinstance可以判断子类实例对象是属于父类的;而type会判断子类实例对象和父类类型不一样
# coding=UTF-8
class father(object):
pass
class son(father):
pass
>>>a=father()
>>>b=son()
>>>isinstance(a,father)
True
>>>type(a)==father
True
>>>isinstance(b,father)#isinstance得到子类实例是属于父类的
True
>>>type(b)==father#type对于子类实例判断不属于父类
False
综上所述,isinstance和type的应用场景是不同的: type主要用于获取未知变量的类型 isinstance主要用于判断A类是否继承于B类
文章部分内容引用自链接:
1、https://www.jianshu.com/p/1f59c4cc3876
来源:简书
2、https://www.runoob.com/python/python-func-isinstance.html
注意:本文归作者所有,未经作者允许,不得转载