Python3 isinstance()函数

Python中的 isinstance() 函数,是Python中的一个内置函数,用来判断一个函数是否是一个已知的类型,类似 type()。

isinstance(object,classinfo)

参数
object : 实例对象。
classinfo : 可以是直接或者间接类名、基本类型或者由它们组成的元组。

返回值
如果对象的类型与参数二的类型(classinfo)相同则返回 True,否则返回False。

例如:

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

isinstance()与type()的区别:
isinstance() 会认为子类是一种父类类型,考虑继承关系。
type() 不会认为子类是一种父类类型,不考虑继承关系。

class Parent:
    pass
class Child(Parent):
    pass
isinstance(Parent(), Parent)   # returns True
type(Parent()) == Parent       # returns True
isinstance(Child(), Parent)    # returns True
type(Child()) == Parent        # returns False

创建一个Parent对象,再创建一个继承Parent对象的Child对象,使用 isinstance() 和 type() 来比较 Parent() 和 Parent 时,由于它们的类型都是一样的,所以都返回了 True。而Child对象继承于Parent对象,在使用isinstance()函数来比较 Child() 和 Parent 时,由于考虑了继承关系,所以返回了 True,使用 type() 函数来比较 Child() 和 Parent 时,不会考虑 Child() 继承自哪里,所以返回了 False。

如果要判断两个类型是否相同,则推荐使用isinstance()。

Python3 isinstance()函数
滚动到顶部