Python | isinstance函数的使用
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 函数只检查一个对象的类型,而不考虑对象的值。如果想比较两个对象的值是否相等,可以使用 == 操作符或其他比较运算符。

浙公网安备 33010602011771号