2015-04-16 95 views
0

多重继承我有这样与抽象类

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 

有没有办法解决这个问题?

回答

0

我不确定这是否会回来咬我,但我通过聚合而不是继承来解决它。所以相反:

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

    def getWidget(self): 
     return self.myTable