Python 抽象类的多重继承

Python 抽象类的多重继承,python,qt4,multiple-inheritance,Python,Qt4,Multiple Inheritance,我有一节这样的课 from abc import ABCMeta, abstractmethod class Observer(object): __metaclass__ = ABCMeta @abstractmethod def update(self, dataMsg): pass Observer.register(tuple) class MyTable(QTableWidget, Observer): def __init__(

我有一节这样的课

from abc import ABCMeta, abstractmethod

class Observer(object):
    __metaclass__ = ABCMeta

    @abstractmethod
    def update(self, dataMsg):
        pass

Observer.register(tuple)
class MyTable(QTableWidget, Observer):
    def __init__(self, data):
        QTableWidget.__init__(self, 0, len(data))
        self.setHorizontalHeaderLabels(data)
我需要能够像这样繁衍后代

from abc import ABCMeta, abstractmethod

class Observer(object):
    __metaclass__ = ABCMeta

    @abstractmethod
    def update(self, dataMsg):
        pass

Observer.register(tuple)
class MyTable(QTableWidget, Observer):
    def __init__(self, data):
        QTableWidget.__init__(self, 0, len(data))
        self.setHorizontalHeaderLabels(data)
但如果我这样做,我会得到以下错误:

tableColumns = QStringList(['A' , 'B'])
atable = MyTable(tableColumns)

 class MyTable(QTableWidget, Observer):
TypeError: Error when calling the metaclass bases
    metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

有办法解决这个问题吗?

我不确定这是否会再次困扰我,但我通过聚合而不是继承来解决它。因此:

class MyTable(Observer):
    def __init__(self, data):
        self.myTable = QTableWidget(0, len(data))
        self.myTable.setHorizontalHeaderLabels(data)

    def getWidget(self):
        return self.myTable