在 Python 中,isinstance() 是一个内置函数,用于检查一个对象是否是指定类(或类型)的实例,或者是否是指定元组中任何类的实例。
基本语法
isinstance(object, classinfo)
object:要检查的对象。classinfo:一个类、类型,或包含类/类型的元组。
返回值
object是classinfo中任意一个类的实例,返回True。- 否则,返回
False。
示例
检查单个类型
x = 10 print(isinstance(x, int)) # True print(isinstance(x, float)) # False print(isinstance(x, (int, str))) # True(x 是 int,属于元组中的类型之一)
检查继承关系
class Animal:
pass
class Dog(Animal):
pass
dog = Dog()
print(isinstance(dog, Dog)) # True
print(isinstance(dog, Animal)) # True(Dog 继承自 Animal)
print(isinstance(dog, object)) # True(所有类都继承自 object)
与 type() 的区别
type() 只检查精确类型,不考虑继承;而 isinstance() 考虑继承关系。
class Parent:
pass
class Child(Parent):
pass
obj = Child()
print(type(obj) is Child) # True
print(isinstance(obj, Child)) # True
print(isinstance(obj, Parent)) # True(考虑继承)
print(type(obj) is Parent) # False(type 不考虑继承)
使用场景
- 类型检查:在函数或方法中验证输入参数的类型。
- 多态支持:在面向对象编程中,判断对象是否属于某个类层次结构。
- 安全编码:避免在错误类型上调用方法导致运行时错误。
注意事项
- 避免过度使用
isinstance()进行类型检查,Python 更推荐“鸭子类型”(Duck Typing),即“如果它走起来像鸭子,叫起来像鸭子,那它就是鸭子”。 - 在需要严格类型匹配时,可结合
type()使用。
| 特性 | isinstance() |
type() |
|---|---|---|
| 是否考虑继承 | ✅ 是 | ❌ 否 |
| 是否支持元组 | ✅ 是 | ❌ 否 |
| 推荐用途 | 类型检查、多态、继承关系判断 | 精确类型匹配 |
希望这能帮助你理解 isinstance() 的用法!如有更多问题,欢迎继续提问。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/485524.html



