在 Python 中,isinstance()函数用于判断一个对象是否是指定类或类型的实例。
函数语法
isinstance(object, classinfo)
参数:
object:要检查的对象;classinfo:类、类型或类型元组;
如果object是classinfo的实例或其子类的实例,则返回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(包括父类)