PySide, PysideUIC and Multiple Inheritance

Viewed 1519

I have a dialog class that is inheriting a pyside-uic-generated python class but my problem is that it cannot be extended my adding another base class.

import sys
from PySide import QtGui
from mi_ui import Ui_Dialog

class Worker(object):
    def __init__(self):
        super(Worker, self).__init__()
        self.data = 1

class MainDialog(QtGui.QDialog, Ui_Dialog, Worker):
    def __init__(self):
        super(MainDialog, self).__init__()
        self.setupUi(self)

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    dlg = MainDialog()
    print dlg.data
    dlg.show()

    sys.exit(app.exec_())

When I try to extend MainDialog with Worker, super does not call the Worker's __init__ and the print dlg.data fails because "AttributeError: 'MainDialog' object has no attribute 'data'"

My only work around seems to ignore super and invoke each __init__ manually.

QtGui.QDialog.__init__(self)
Worker.__init__(self)

Is this my only solution?

This is for Python 2.7.

2 Answers
Related