Python 内建函数列表 > Python 的内置函数 isinstance
Python 的内置函数 isinstance() 用于判断一个对象是否属于某个类或类型,或者是否属于由这些类型组成的元组中的一个。它是 Python 中类型检查的重要工具,相比于 type() 函数具有更灵活的类型检查能力。
其语法为:
isinstance(object, classinfo)
其中:
object 是要检查的对象
classinfo 可以是一个类型对象,或者由类型对象组成的元组
isinstance() 的主要特点包括:
支持继承关系检查:当 object 是 classinfo 的子类实例时也会返回 True
返回布尔值:符合条件返回 True,否则返回 False
常见应用场景:
类型检查:验证输入参数的类型是否符合预期
多类型处理:处理可能属于多种类型的对象
继承关系验证:检查对象是否属于某个类或其子类
示例:
# 基本类型检查
num = 42
print(isinstance(num, int)) # True
# 继承关系检查
class Parent: pass
class Child(Parent): pass
obj = Child()
print(isinstance(obj, Parent)) # True
# 多类型检查
value = 3.14
print(isinstance(value, (int, float))) # True
# 与 type() 的区别
print(isinstance(True, int)) # True (因为 bool 是 int 的子类)
print(type(True) == int) # False
注意事项:
对于抽象基类(ABC)的检查,通常使用 collections.abc 模块中的抽象基类
在 Python 3 中,类与类型已经统一,因此 isinstance() 可以用于检查内置类型和自定义类
过度使用类型检查可能会影响代码的灵活性,在 Python 中更推荐"鸭子类型"的编程风格