Python | isinstance函数的使用

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

isinstance() 与 type() 区别:

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

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

语法

isinstance 的语法如下:

isinstance(obj, cls)

其中,obj 是要检查的对象,cls 是要检查的类或类型。如果 objcls 或其子类的实例,则返回 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 类和两个子类 DogCat。然后我们创建了一个 Dog 和一个 Cat 的实例,并使用 isinstance 函数来检查它们的类型。例如,isinstance(dog, Dog) 返回 True,因为 dogDog 类的一个实例。isinstance(dog, Animal) 也返回 True,因为 dogAnimal 类和 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 函数只检查一个对象的类型,而不考虑对象的值。如果想比较两个对象的值是否相等,可以使用 == 操作符或其他比较运算符。

posted @ 2023-04-21 10:23  张Zong在修行  阅读(364)  评论(0编辑  收藏  举报