Tips1 - isinstance函数的运用

royalday 1年前 ⋅ 377 阅读

一、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


全部评论: 0

    我有话说: