Hi Chris,
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On
> Behalf Of Chris Rebert
> Sent: Thursday, February 19, 2009 22:58
> To: Barak, Ron
> Cc: [email protected]; [email protected]
> Subject: Re: "metaclass conflict" error: where is noconflict ?
>
> On Thu, Feb 19, 2009 at 5:01 AM, Barak, Ron <[email protected]> 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