2015-04-16 4 views
0

У меня есть класс, как этотмножественного наследования с абстрактным классом

from abc import ABCMeta, abstractmethod 

class Observer(object): 
    __metaclass__ = ABCMeta 

    @abstractmethod 
    def update(self, dataMsg): 
     pass 

Observer.register(tuple) 

Мне нужно, чтобы иметь возможность Multiply Наследовать как этого

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 
Смежные вопросы