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

时间:2017-07-11 07:31:12

标签: python python-3.x oop inheritance

我正在尝试创建Command类的子类,但我一直收到错误:

  

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

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)

我的Command.py文件和BroadcastCommand.py文件当前位于同一个软件包目录中。

1 个答案:

答案 0 :(得分:0)

如果object继承自BroadcastCommand,那么从objectCommand继承Command是没有用的 - 它足以继承自{{1}它确实提高了你得到的TypeError。解决方案:将BroadcastCommand仅从Command继承。

作为旁注,您的super来电应为

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

并命名您的参数str可能不是一个好主意。