Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 单一继承导致TypeError:元类冲突:派生类的元类必须为_Python_Python 3.x_Oop_Inheritance - Fatal编程技术网

Python 单一继承导致TypeError:元类冲突:派生类的元类必须为

Python 单一继承导致TypeError:元类冲突:派生类的元类必须为,python,python-3.x,oop,inheritance,Python,Python 3.x,Oop,Inheritance,我试图创建一个命令类的子类,但我不断得到错误: 元类冲突:派生类的元类必须是 (非严格的)所有基元类的子类 My Command.py文件和BroadcastCommand.py文件当前在同一个包目录中。如果命令继承自对象,则使广播命令继承自对象和命令-继承自命令就足够了,它确实会引起你得到的TypeError。解决方案:使BroadcastCommand仅从Command继承 作为旁注,您的super呼叫应该是 super(BroadcastCommand, self).__init__(so

我试图创建一个命令类的子类,但我不断得到错误:

元类冲突:派生类的元类必须是 (非严格的)所有基元类的子类


My Command.py文件和BroadcastCommand.py文件当前在同一个包目录中。

如果
命令继承自
对象
,则使
广播命令
继承自
对象
命令
-继承自
命令就足够了,它确实会引起你得到的
TypeError
。解决方案:使
BroadcastCommand
仅从
Command
继承

作为旁注,您的
super
呼叫应该是

super(BroadcastCommand, self).__init__(sock, str)

命名param
str
可能不是一个好主意。

这不是您发布的代码会导致的错误消息。为什么要在
BroadcastCommand
中将
对象子类化?这将始终是一个问题,因为它会弄乱MRO。OP的
super()
调用可以简化为
super()。\uuuu init\uuuu(sock,str)
,因为Python 3允许您在不带参数的情况下调用
super()
,只在类定义中调用。
super(BroadcastCommand, self).__init__(sock, str)