Python isinstance() 函数

Python3 内置函数 Python3 内置函数


isinstance() 是 Python 中用于检查对象是否为指定类型(或类型元组中任意一个类型)实例的内置函数。

isinstance() 是 Python 中最常用的类型检查函数,它不仅检查精确类型,还会考虑继承关系(子类也是父类的实例)。

单词释义isinstance 是 is an instance(是一个实例)的缩写。


基本语法与参数

语法格式

isinstance(object, classinfo)

参数说明

  • 参数 object
    • 类型: 任意对象
    • 描述: 要检查的对象。
  • 参数 classinfo
    • 类型: 类型、类型元组、或抽象基类
    • 描述: 要检查的类型。可以是单个类型,也可以是类型元组。

函数说明

  • 返回值: 返回布尔值 TrueFalse
  • 特点: 如果 object 是 classinfo 的子类实例,也返回 True。

实例

示例 1:基础用法

实例

# 检查基本类型
print(isinstance(123, int))           # 输出: True
print(isinstance(3.14, float))        # 输出: True
print(isinstance("hello", str))       # 输出: True
print(isinstance([1, 2], list))       # 输出: True
print(isinstance({"a": 1}, dict))     # 输出: True

# 检查 None
print(isinstance(None, type(None)))   # 输出: True

# 检查布尔值(注意:bool 是 int 的子类)
print(isinstance(True, bool))         # 输出: True
print(isinstance(True, int))          # 输出: True(因为 bool 继承自 int)

运行结果预期:

True
True
True
True
True
True
True
True

代码解析:

  1. 可以检查各种基本类型。
  2. bool 是 int 的子类,所以 True/False 也是 int 的实例。

示例 2:使用类型元组

实例

# 检查多种类型(使用元组)
value = 42

print(isinstance(value, (int, float)))    # 输出: True
print(isinstance(value, (str, list)))     # 输出: False

# 检查多种类型混合
value = "hello"
print(isinstance(value, (int, str, bytes))) # 输出: True

# 用于条件判断
def process_data(data):
    if isinstance(data, (list, tuple)):
        return sum(data)
    elif isinstance(data, (int, float)):
        return data * 2
    else:
        return str(data)

print(process_data([1, 2, 3]))     # 输出: 6
print(process_data((1, 2, 3)))    # 输出: 6
print(process_data(10))           # 输出: 20
print(process_data(3.14))         # 输出: 6.28
print(process_data("hello"))      # 输出: hello

运行结果预期:

True
False
True
6
6
20
6.28
hello

代码解析:

  • 第二个参数可以是类型元组,同时检查多种类型。
  • 这在处理多种数据类型时非常方便。

示例 3:与类继承

实例

# 类继承示例
class Animal:
    pass

class Dog(Animal):
    pass

class Cat(Animal):
    pass

# 创建实例
dog = Dog()
cat = Cat()
animal = Animal()

# isinstance 会考虑继承关系
print(isinstance(dog, Dog))      # 输出: True
print(isinstance(dog, Animal))   # 输出: True(子类实例也是父类实例)
print(isinstance(dog, Cat))      # 输出: False

print(isinstance(cat, Animal))   # 输出: True
print(isinstance(animal, Dog))   # 输出: False

运行结果预期:

True
True
False
True
False

isinstance() 会检查继承链,所以子类实例也属于父类的实例。


Python3 内置函数 Python3 内置函数