मेरे पास एक संवाद वर्ग है जो एक पाइसाइड-यूआईसी-जेनरेटेड पायथन कक्षा विरासत में है लेकिन मेरी समस्या यह है कि इसे एक और बेस क्लास जोड़ने के लिए विस्तारित नहीं किया जा सकता है।पायसाइड, पीसाइडयूआईसी और एकाधिक विरासत
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_())
जब मैं Worker
साथ MainDialog
का विस्तार करने की कोशिश, सुपर फोन नहीं करता है Worker
के __init__
और प्रिंट dlg.data में विफल रहता है, क्योंकि "AttributeError: '
मेरा एकमात्र काम सुपर को अनदेखा करता है और मैन्युअल रूप से प्रत्येक __init__
को आमंत्रित करता है।
QtGui.QDialog.__init__(self)
Worker.__init__(self)
क्या यह मेरा एकमात्र समाधान है?
यह पायथन 2.7 के लिए है।
जहां तक मेरा अनुभव चिंतित है, 'सुपर() 'क्यूटी के लिए पाइसाइड रैपर के साथ काम नहीं करता है, और मुझे विश्वास नहीं है कि पीईक्यूटी यहां कोई अलग है। इसलिए '__init__' मैन्युअल रूप से कॉल करना आपका एकमात्र तरीका हो सकता है। केवल हीरे के आकार के उत्तराधिकारों से बचने (या आसपास काम करने) सुनिश्चित करना सुनिश्चित करें। – quazgar