Python内置函数isinstance()函数介绍

Python内置函数isinstance()函数介绍

isinstance() 函数是Python内置函数,来判断一个对象是否是一个已知的类型,返回值为布尔值True或False。其语法格式:

isinstance(object, classinfo)

【官方说法https://docs.python.org/zh-cn/3/library/functions.html#isinstance 

如果 object 参数是 classinfo 参数的实例,或其(直接、间接或 virtual )子类的实例,则返回 True。 如果 object 不是给定类型的对象,则总是返回 False。如果 classinfo 是类型对象的元组(或由该类元组递归生成)或多个类型的 union 类型,那么当 object 是其中任一类型的实例时就会返回 True。如果 classinfo 不是某个类型或类型元组,将会触发 TypeError 异常。】

官方说法不好理解,下面解说之。

参数

object -- 实例对象,是要进行类型检查的对象。

classinfo -- 可以是直接或间接类名、基本类型或者由它们组成的元组。

对于基本类型来说 classinfo 可以是:int,float,bool,complex,str(字符串),list,dict(字典),set,tuple。classinfo参数也可以接由多个类型对象组成的元组作为参数,当classinfo参数为多个类型对象时,isinstance()函数会逐一检查每个类型对象,只要object属于其中任意一个类型,就返回True。

>>>a = 2 
>>> isinstance (a,int) 
True 
>>> isinstance (a,str) 
False 
>>> isinstance (a,(str,int,list)) # 是元组中的一个返回 True
True

isinstance()函数也可以用于判断一个对象是否为某个类或其子类的实例。

下面是用于类的情况

# isinstance()函数用于类的示例
class Animal:
    pass

class Dog(Animal):
    pass

class Cat(Animal):
    pass

dog = Dog()
cat = Cat()

print(isinstance(dog, Dog))     # 返回True, dog是Dog类的实例
print(isinstance(cat, Animal))  # 返回True, cat是Animal类的子类Cat的实例

在上面的例子中,isinstance()函数分别对dog和cat对象进行了类型检查,传入的classinfo参数分别为Dog和Animal,即可判断它们是否为这两个类的实例。

下面,再给出一个用于类的例子

class A:
    pass

class B(A):
    pass

class C:
    pass

print(isinstance(A(), A))  # 返回:True
print(isinstance(B(), A))  # 返回:True
print(isinstance(C(), A))  # 返回:False

你可能感兴趣的:(Python学习,python)