Hi Chris, > -----Original Message----- > From: ch...@rebertia.com [mailto:ch...@rebertia.com] On > Behalf Of Chris Rebert > Sent: Thursday, February 19, 2009 22:58 > To: Barak, Ron > Cc: python-list@python.org; wxpython-us...@lists.wxwidgets.org > Subject: Re: "metaclass conflict" error: where is noconflict ? > > On Thu, Feb 19, 2009 at 5:01 AM, Barak, Ron <ron.ba...@lsi.com> wrote: > > Hi, > > > > I have a class derived from two parents (in blue below), > which gives > > me the following error: > > > > $ python -u ./failover_pickle_demo09.py Traceback (most recent call > > last): > > File "./failover_pickle_demo09.py", line 291, in <module> > > class ListControl(wx.Frame, CopyAndPaste): > > TypeError: Error when calling the metaclass bases > > metaclass conflict: the metaclass of a derived class must be a > > (non-strict) subclass of the metaclasses of all its bases Googling > > suggested I should add from noconflict import classmaker and > > > > __metaclass__=classmaker() > > to this class. > > > > However, I don't seem able to find where to get the > noconflict module from. > > > > Do any of you where noconflict could be downloaded/installed from ? > > From what I could google, you should in theory be able to fix > the problem (without using any 3rd party module) by doing: > > class ListControlMeta(type(wx.Frame), type(CopyAndPaste)): > pass > > class ListControl(wx.Frame, CopyAndPaste): > __metaclass__ = ListControlMeta > #rest of class... > > Cheers, > Chris
Applying your suggestion: class ListControlMeta(type(wx.Frame), type(CopyAndPaste)): pass class ListControl(wx.Frame, CopyAndPaste): def __init__(self, parent, id, title, list, max_list_width, log_stream, style=wx.DEFAULT_FRAME_STYLE): __metaclass__= ListControlMeta wx.Frame.__init__(self,parent,id,title,size=(max_list_width,-1), style=style) self.list = list self.log_stream = log_stream self.list_ctrl = wx.ListCtrl(self, -1, style=wx.LC_REPORT | wx.LC_NO_HEADER) self.list_ctrl.InsertColumn(0, title) for i,line_ in enumerate(list): self.list_ctrl.InsertStringItem(i, line_) ... I get: $ python -u ./failover_pickle_demo09.py Traceback (most recent call last): File "./failover_pickle_demo09.py", line 319, in <module> class ListControlMeta(type(wx.Frame), type(CopyAndPaste)): TypeError: Error when calling the metaclass bases multiple bases have instance lay-out conflict So, back to trying to understand... Thanks and bye, Ron. > > -- > Follow the path of the Iguana... > http://rebertia.com >
-- http://mail.python.org/mailman/listinfo/python-list