有人可以解释这个错误的确切含义,TypeError: issubclass() arg 1 must be a class

新手上路,请多包涵

我对为什么会收到此错误一无所知。

原文由 gizgok 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.5k
2 个回答

这意味着您不提供类作为 issubclass() 的参数。两个参数都必须是类。第二个参数也可以是类的元组。

如果您显示引发此错误的代码,我们可以进一步提供帮助。


文档 中:

issubclass(类,类信息)

返回 true 如果 classclassinfo 的子类(直接或间接)。类被认为是其自身的子类。 classinfo 可能是类对象的元组,在这种情况下,将检查 classinfo 中的每个条目。在任何其他情况下,都会引发 TypeError 异常。

原文由 Felix Kling 发布,翻译遵循 CC BY-SA 2.5 许可协议

正如人们所说, issubclass() 的 2 个参数应该是类,而不是对象的实例。

考虑这个样本:

 >>> 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()

原文由 Adrien Plisson 发布,翻译遵循 CC BY-SA 2.5 许可协议

推荐问题