3

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

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"

错误。我尝试研究其他类似的问题,但老实说,我不太了解。任何关于如何解决这个问题的见解将不胜感激。谢谢

4

1 回答 1

8

我终于通过一点研究解决了这个问题。显然,该错误必须与 __ slot __属性的冲突有关,该冲突在为新类型分配堆内存时使用。这是我所做的更改:

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

于 2013-09-13T08:02:51.223 回答