有人能解释一下这个错误的具体含义吗,TypeError: issubclass() 第一个参数必须是一个类

24 投票
8 回答
81614 浏览
提问于 2025-04-15 20:32

我完全不知道为什么会出现这个错误。

8 个回答

15

对于使用PydanticFastAPI并遇到这个错误的人,这里有个解决办法。你可以查看这个链接了解更多信息:https://stackoverflow.com/a/70384637/7335848

28

issubclass()这个函数的两个参数应该是类,而不是对象的实例。

来看这个例子:

>>> issubclass( 1, int )
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: issubclass() arg 1 must be a class
>>> issubclass( type(1), int )
True    
>>> isinstance( 1, int )
True

关键在于使用type()函数来获取一个实例的类型,这样才能和issubclass()函数一起使用。正如另一个评论中提到的,这其实和调用isinstance()是一样的。

4

这句话的意思是,你没有给 issubclass() 函数提供一个类作为参数。这个函数的两个参数都必须是类。第二个参数也可以是一个包含多个类的元组。

如果你能提供抛出这个错误的代码,我们可以进一步帮助你。


来自 文档

issubclass(class, classinfo)
如果 classclassinfo 的子类(直接或间接),那么返回 true。一个类被认为是它自己的子类。classinfo 可以是一个类对象的元组,在这种情况下,会检查元组中的每一个条目。如果不是这种情况,就会抛出 TypeError 异常。

撰写回答