摘要:内置函数 isinstance 用于检查一个对象是否是某个类或其子类的实例。它支持类型继承判断,并且可以一次性检测多个类型,是类型检查与条件分支中常用的工具。
内置函数 isinstance 用于检查一个对象是否是某个类或其子类的实例。它支持类型继承判断,并且可以一次性检测多个类型,是类型检查与条件分支中常用的工具。
一、函数语法
isinstance(object, classinfo)参数:
object:要检测的对象。
classinfo:单个类、类型,或由多个类/类型组成的元组。
返回值:
返回 True,表示 object 是 classinfo 或其子类的实例。
返回 False,表示不符合上述条件。
二、基础用法示例
1、检测单一类型
print(isinstance(10, int)) # Trueprint(isinstance("Hello", str)) # Trueprint(isinstance([1, 2], list)) # Trueprint(isinstance(3.14, int)) # False2、检测多个类型
print(isinstance(3.14, (int, float))) # Trueprint(isinstance("Hi", (int, float))) # False3、继承关系检测
class Animal: passclass Dog(Animal): passd = Dogprint(isinstance(d, Dog)) # Trueprint(isinstance(d, Animal)) # True # 继承关系成立三、进阶技巧
1、动态类型检查
def process(value):if isinstance(value, (int, float)):return value * 2raise TypeError("仅支持数字类型")print(process(10)) # 202、配合抽象基类(ABC)
from collections.abc import Iterableprint(isinstance([1, 2, 3], Iterable)) # Trueprint(isinstance(123, Iterable)) # False3、自定义类型判断
class MyClass: passobj = MyClassprint(isinstance(obj, MyClass)) # True四、补充说明
1、classinfo 必须是类、类型或类型元组,不能是其他对象。
2、检测内置类型时,可以直接传入内置类型(如 int、str、list)。
3、如果需要判断类本身的继承关系,请使用 issubclass 而不是 isinstance。
4、与 的区别:isinstance 考虑继承关系;type 严格匹配对象的确切类型,不考虑继承。
“点赞有美意,赞赏是鼓励”
来源:语蓉教育
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!