Python 内建函数列表 > Python 的内置函数 issubclass
Python 的内置函数 issubclass 用于检查一个类是否是另一个类的子类(直接或间接继承)。它是 Python 面向对象编程中类型检查的重要工具。
语法
issubclass(class, classinfo)
参数说明
class:需要检查的类(必须是类对象,不能是实例)classinfo:可以是一个类对象,或者由类对象组成的元组
返回值
返回布尔值:
True:如果class是classinfo的子类False:其他情况
工作方式
- 当
classinfo是单个类时,检查标准的继承关系 - 当
classinfo是元组时,检查class是否是其中任何一个类的子类 - 会自动处理多重继承的情况
示例代码
class Animal:
pass
class Mammal(Animal):
pass
class Dog(Mammal):
pass
# 简单继承检查
print(issubclass(Dog, Mammal)) # True
print(issubclass(Dog, Animal)) # True
# 使用元组检查
print(issubclass(Dog, (str, Mammal))) # True
# 非继承关系
print(issubclass(Dog, str)) # False
注意事项
- 第一个参数必须是类对象,不能是实例
d = Dog() # issubclass(d, Mammal) # 会引发 TypeError - 如果
classinfo不是类或元组,会引发 TypeError - 虚基类(通过 ABC 模块创建的抽象基类)也能被正确识别
典型应用场景
- 类型检查与验证
- 框架开发中的插件系统
- 接口实现验证
- 动态类注册系统
与 isinstance() 的区别
isinstance()检查对象实例与类的关系issubclass()检查类与类之间的关系
在 Python 3 中,issubclass 还支持检查协议类(Protocol classes)和抽象基类(ABCs),使其在现代 Python 类型系统中更加灵活。