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