有人能解释一下这个错误的具体含义吗,TypeError: issubclass() 第一个参数必须是一个类
我完全不知道为什么会出现这个错误。
8 个回答
15
对于使用Pydantic或FastAPI并遇到这个错误的人,这里有个解决办法。你可以查看这个链接了解更多信息: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)
如果class
是classinfo
的子类(直接或间接),那么返回true
。一个类被认为是它自己的子类。classinfo
可以是一个类对象的元组,在这种情况下,会检查元组中的每一个条目。如果不是这种情况,就会抛出TypeError
异常。