python中isinstance()和insubclass()的实现
作者:sonrisa_
本文主要介绍了python中isinstance()和insubclass()的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
isinstance()和issubclass()的功能与用法
1.isinstance(obj, classinfo)
功能:检查对象 obj
是否是 classinfo
类(或其子类)的实例。
返回值:True
或 False
。
用法:
class Animal: pass class Dog(Animal): pass dog = Dog() print(isinstance(dog, Dog)) # True(直接类) print(isinstance(dog, Animal)) # True(父类) print(isinstance(dog, str)) # False(无关类)
特点:
支持检查多个类(元组形式):
print(isinstance(dog, (Dog, Animal, str))) # True(匹配任一即可)
适用于动态类型校验(如函数参数验证)。
2.issubclass(cls, classinfo)
功能:检查类 cls
是否是 classinfo
的子类(或自身)。
返回值:True
或 False
。
用法:
class Animal: pass class Dog(Animal): pass print(issubclass(Dog, Animal)) # True(子类) print(issubclass(Dog, Dog)) # True(自身) print(issubclass(Dog, object)) # True(所有类继承自 object) print(issubclass(Animal, Dog)) # False
特点:
同样支持元组检查多类:
print(issubclass(Dog, (Animal, str))) # True
常用于类关系设计或框架中约束继承关系。
核心区别
函数 | 作用对象 | 检查目标 | 典型场景 |
---|---|---|---|
isinstance() | 对象 (obj) | 是否是某类的实例 | 运行时类型验证 |
issubclass() | 类 (cls) | 是否是某类的子类 | 设计时继承关系校验 |
示例场景:
def process_animal(animal): if not isinstance(animal, Animal): raise TypeError("必须传入 Animal 或其子类实例") # 处理逻辑... class Bird(Animal): pass process_animal(Bird()) # 通过 process_animal("abc") # 报错
到此这篇关于python中isinstance()和insubclass()的实现的文章就介绍到这了,更多相关python isinstance() insubclass()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!