在 Python 中,isinstance()函数用于判断一个对象是否是指定类或类型的实例。

函数语法

isinstance(object, classinfo)

参数:

  • object:要检查的对象;
  • classinfo:类、类型或类型元组;

如果objectclassinfo的实例或其子类的实例,则返回True,否则返回False

isinstance() 函数示例

# 判断一个整数是否是 int 类型的实例
num = 123
result = isinstance(num, int)
print(result)  # 输出:True

# 判断一个字符串是否是 str 类型的实例
str_value = "hello world"
result = isinstance(str_value, str)
print(result)  # 输出:True

# 判断一个列表是否是 list 类型的实例
list_value = [1, 2, 3]
result = isinstance(list_value, list)
print(result)  # 输出:True

检查多个类型:

value = 123.456
print(isinstance(value, (int, float)))  # True
print(isinstance(value, (str, list)))   # False

data = ["a", "b"]
print(isinstance(data, (list, tuple)))  # True

检查类的继承关系:

class Animal:
    pass

class Dog(Animal):  # Dog 继承 Animal
    pass

class Cat(Animal):  # Cat 继承 Animal
    pass

dog = Dog()
print(isinstance(dog, Dog))       # True
print(isinstance(dog, Animal))    # True(父类)
print(isinstance(dog, Cat))       # False

animal = Animal()
print(isinstance(animal, Dog))    # False(不能向上检查)

type()的区别:

class Animal:
    pass

class Dog(Animal):
    pass

dog = Dog()

# type() 严格检查类型
print(type(dog) == Dog)        # True
print(type(dog) == Animal)     # False(严格匹配)

# isinstance() 考虑继承关系
print(isinstance(dog, Dog))    # True
print(isinstance(dog, Animal)) # True(包括父类)