Python 有人能解释一下这个错误的确切含义吗?TypeError:issubclass()arg 1必须是一个类

Python 有人能解释一下这个错误的确切含义吗?TypeError:issubclass()arg 1必须是一个类,python,Python,我不知道为什么会出现这个错误。这意味着您没有为issubclass()提供类作为参数。两个参数都必须是类。第二个参数也可以是类的元组 如果您显示引发此错误的代码,我们可以提供进一步帮助。 从: issubclass(class,classinfo) 如果class是classinfo的子类(直接或间接),则返回true。类被认为是其自身的一个子类classinfo可能是类对象的元组,在这种情况下,将检查classinfo中的每个条目。在任何其他情况下,都会引发TypeError异常 issub

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

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

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


从:

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


issubclass()
的第一个参数必须是“class”类型


正如人们所说,
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
>issubclass(1,int)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:issubclass()arg 1必须是类
>>>issubclass(类型(1),int)
真的
>>>isinstance(1,int)
真的

关键是使用
type()
函数来获取实例的类型,以便与
issubclass()
函数一起使用,正如在另一条注释中所指出的,这相当于调用
isinstance()

基本上这个方法告诉您第一个参数是否是第二个参数的子类。所以很自然,两个参数都需要是类。从您的调用中可以看出,您调用了
issubclass
,但没有任何参数,这会混淆解释器

调用
issubclass
就像问解释器:“嘿!这个类是另一个类的子类吗?”。但是,由于您没有提供两个类,因此您基本上询问了解释器:“嘿!我不会向您展示任何东西,但是告诉我这是否是一个子类”。这会混淆解释器,这就是为什么会出现此错误。

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

这是不正确的:

这是正确的:


错误似乎很明显。也许你应该发布你认为应该有效但不起作用的代码。而且,使用
issubclass
的理由非常少。也许你是想使用
isinstance()
相反?我没有使用issubclass。我正在尝试在两个对象之间建立关系。类X有一个属性,该属性的类型应为类Y。我将发布两个类文件,它们都是代码,但它们都非常大,而且我是python和堆栈溢出方面的新手……因此,如果有特殊的方法可以做到这一点,请开导me@gizgok:首先,将引发此错误的代码张贴到引发此错误的位置。嗯,您是对的。。。我不想把一个python初学者弄糊涂。我应该使用“对象实例”(如果我错了请纠正我)@Felix:我有club类和manager类。club类有属性manager,其中应保存manager类的实例。我为关系编写了函数,反之亦然。我想这些函数会导致issubclass错误
class AnyClass(BaseClass):
    email = str
class AnyClass(BaseClass):
    email : str