【问题标题】:Python. I get an error on Multiple inheritancePython。我收到关于多重继承的错误
【发布时间】:2013-09-13 06:57:11
【问题描述】:

我想做的只是从两个不同的类继承。

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

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

最初的错误。但我通过添加 __metaclass__ 属性解决了这个问题:

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"

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

【问题讨论】:

    标签: python pyqt enthought traitsui


    【解决方案1】:

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

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2021-02-14
      • 2015-11-11
      • 2020-03-09
      • 2015-01-12
      • 2016-05-07
      • 2020-12-18
      相关资源
      最近更新 更多