Python | isinstance函数的使用

发布时间 2023-04-21 10:31:22作者: 张Zong在修行

isinstance 是一个 Python 内置函数,用于检查一个对象是否是指定类或其子类的实例。isinstance(obj, cls) 返回一个布尔值,表示 obj 是否是 cls 或其子类的实例。类似 type()。

isinstance() 与 type() 区别:

  • type() 不会认为子类是一种父类类型,不考虑继承关系。
  • isinstance() 会认为子类是一种父类类型,考虑继承关系。

如果要判断两个类型是否相同推荐使用 isinstance()。

语法

isinstance 的语法如下:

isinstance(obj, cls)

其中,obj 是要检查的对象,cls 是要检查的类或类型。如果 obj 是 cls 或其子类的实例,则返回 True,否则返回 False。

示例用法

示例一:

class Animal:
    pass

class Dog(Animal):
    pass

class Cat(Animal):
    pass

dog = Dog()
cat = Cat()

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

print(isinstance(cat, Cat))    # True
print(isinstance(cat, Animal)) # True
print(isinstance(cat, Dog))    # False

在上面的例子中,我们定义了一个 Animal 类和两个子类 Dog 和 Cat。然后我们创建了一个 Dog 和一个 Cat 的实例,并使用 isinstance 函数来检查它们的类型。例如,isinstance(dog, Dog) 返回 True,因为 dog 是 Dog 类的一个实例。isinstance(dog, Animal) 也返回 True,因为 dog 是 Animal 类和 Dog 类的子类之一。而 isinstance(dog, Cat) 返回 False,因为 dog 不是 Cat 类的实例。

示例二:

>>>a = 2
>>> isinstance (a,int)
True
>>> isinstance (a,str)
False
>>> isinstance (a,(str,int,list))    # 是元组中的一个返回 True
True

type() 与 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

总结

isinstance 函数可以用于很多场合,例如:

  • 检查一个对象的类型,根据不同类型执行不同的操作。
  • 在继承关系中检查对象的类型,判断是否需要调用父类的方法。
  • 在编写类型检查代码时,确保代码能够处理不同类型的对象。

需要注意的是,isinstance 函数只检查一个对象的类型,而不考虑对象的值。如果想比较两个对象的值是否相等,可以使用 == 操作符或其他比较运算符。