2022年 11月 5日

python中isinstance()函数详解

isinstance() 函数来判断一个对象是否是一个已知的类型,比如:

isinstance(2,int)
  • 1

因为2是int整型,函数将会返回True.
instance()函数的语法形式为:

isinstance(object, classinfo)
  • 1

两个参数表示的意思为:
object – 实例对象,就相当于刚才例子中的2.
classinfo – 可以是直接或间接类名、基本类型或者由它们组成的元组。
返回值:如果对象的类型与参数二的类型(classinfo)相同则返回 True,否则返回 False。
这里给出一个例子:

>>>a = 2
>>> isinstance (a,int)
True
>>> isinstance (a,str)
False
>>> isinstance (a,(str,int,list))    # 是元组中的一个返回 True
True
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

可以看出isinstance()函数和type()函数很类似。但是两者又有区别,type() 不会认为子类是一种父类类型,不考虑继承关系。isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。
这里给出两个函数区别的示例:

class A:
    pass
 
class B(A):
    pass
 
isinstance(A(), A)    # returns True
type(A()) == A        # returns True
isinstance(B(), A)    # returns True
type(B()) == A        # returns False
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10