内置函数 isinstance() 用于检查一个对象是否是某个类或其子类的实例。它支持类型继承判断,并且可以一次性检测多个类型,是类型检查与条件分支中常用的工具。
一、函数语法
isinstance(object, classinfo)参数:
object:要检测的对象。
classinfo:单个类、类型,或由多个类/类型组成的元组。
返回值:
返回 True,表示 object 是 classinfo 或其子类的实例。
返回 False,表示不符合上述条件。
二、基础用法示例
1、检测单一类型
print(isinstance(10, int)) # True
print(isinstance("Hello", str)) # True
print(isinstance([1, 2], list)) # True
print(isinstance(3.14, int)) # False2、检测多个类型
print(isinstance(3.14, (int, float))) # True
print(isinstance("Hi", (int, float))) # False3、继承关系检测
class Animal: pass
class Dog(Animal): pass
d = Dog()
print(isinstance(d, Dog)) # True
print(isinstance(d, Animal)) # True # 继承关系成立三、进阶技巧
1、动态类型检查
def process(value):
if isinstance(value, (int, float)):
return value * 2
raise TypeError("仅支持数字类型")
print(process(10)) # 202、配合抽象基类(ABC)
from collections.abc import Iterable
print(isinstance([1, 2, 3], Iterable)) # True
print(isinstance(123, Iterable)) # False3、自定义类型判断
class MyClass: pass
obj = MyClass()
print(isinstance(obj, MyClass)) # True四、补充说明
1、classinfo 必须是类、类型或类型元组,不能是其他对象。
2、检测内置类型时,可以直接传入内置类型(如 int、str、list)。
3、如果需要判断类本身的继承关系,请使用 issubclass() 而不是 isinstance()。
4、与 的区别:isinstance() 考虑继承关系;type() 严格匹配对象的确切类型,不考虑继承。
“点赞有美意,赞赏是鼓励”
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.