有人可以解释这个错误的确切含义,TypeError:issubclass()arg 1必须是一个类

时间:2010-03-17 17:50:44

标签: python

我不知道为什么我会收到这个错误。

5 个答案:

答案 0 :(得分:7)

正如人们所说,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() }

答案 1 :(得分:2)

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

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


来自documentation

  

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

答案 2 :(得分:0)

issubclass()的第一个参数需要是“class”类型。

http://pyref.infogami.com/issubclass

答案 3 :(得分:0)

基本上,此方法会告诉您第一个参数是否是第二个参数的子类。很自然,你的参数都需要是类。从您的通话中可以看出,您已调用issubclass而没有任何参数,这会使解释程序感到困惑。

调用issubclass就像问解释器一样:“嘿!这个类是这个类的子类吗?”。但是,由于你没有提供两个课程,你基本上已经问了解释者:“嘿!我不打算给你看任何东西,但告诉我这是否是一个子类”。这会使解释器混淆,这就是你得到这个错误的原因。

答案 4 :(得分:0)

当你使用“=”而不是“:”来声明类的属性时,你会得到错误: TypeError: issubclass() arg 1 必须是一个类。数字 1 表示您在第一个参数中有错误

这是不正确的:

class AnyClass(BaseClass):
    email = str

这是正确的:

class AnyClass(BaseClass):
    email : str