蟒蛇。我在多重继承上收到错误

时间:2013-09-13 06:57:12

标签: python pyqt enthought traitsui

我所要做的就是从两个不同的类继承。

from traits.api import HasTraits
from PyQt4 import QtCore, QtGui, uic
class Main_Excel_Class(HasTraits,QtGui.QMainWindow):
   pass

我有      “元类冲突:派生类的元类必须是其所有基类的元类的(非严格)子类”

最初错误

。但我通过输入 __ 元类 __ 属性解决了这个问题:

from traits.api import HasTraits
from PyQt4 import QtCore, QtGui, uic

class Main_Excel_Class_Meta(type(HasTraits), type(QtGui.QMainWindow)):
     pass   

class Main_Excel_Class(HasTraits,QtGui.QMainWindow):
      __metaclass__ = Main_Excel_Class_Meta

但现在我最终得到了

"TypeError: Error when calling the metaclass bases
multiple bases have instance lay-out conflict"

错误。我试着调查其他类似的问题,但我老实说不太了解。如何解决这个问题的任何见解将非常感激。三江源

1 个答案:

答案 0 :(得分:8)

我终于通过一些研究解决了这个问题。显然,错误必须对 __ 插槽 __ 属性的冲突执行某些操作,这些冲突在为新类型分配堆内存时使用。这是我所做的更改:

from traits.api import HasTraits
from PyQt4 import QtCore, QtGui, uic

class Main_Excel_Class_Meta(type(HasTraits), type(QtGui.QMainWindow)):
 pass   

class HasTraits(QtGui.QMainWindow):
    pass

class Main_Excel_Class(HasTraits):
    __metaclass__ = Main_Excel_Class_Meta

为了更好地理解我的工作,我建议你查看这篇文章

http://mcjeff.blogspot.in/2009/05/odd-python-errors.html