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

2024-04-26 06:45:17 发布

您现在位置:Python中文网/ 问答频道 /正文

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

metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

class Command(object):
  def __init__(self, sock, str):
    self.sock = sock
    self.str = str
  def execute(self):
    pass

from src import Command

class BroadcastCommand(object, Command):
  def __init__(self, sock, str):
    super(Command, self).__init__()
  def execute(self):
    self.broadcast()
  def broadcast(self):
    print(str)

我的命令.py文件和广播命令.py文件当前在同一个包目录中。你知道吗


Tags: ofthepy命令selfexecuteobjectinit
1条回答
网友
1楼 · 发布于 2024-04-26 06:45:17

如果Commandobject继承,那么从objectCommand继承BroadcastCommand是没有用的—它从Command继承就足够了,而且它确实提高了您得到的TypeError。解决方案:使BroadcastCommand仅从Command继承。你知道吗

顺便说一下,您的super调用应该是

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

命名参数str可能不是个好主意。你知道吗

相关问题 更多 >