Guy Lateur schrieb: > Hi all, > > I've been writing an application containing a lot of settings which can be > changed by the user. I'm using wx.Config to read/write these settings (to > the windows registry). This means I can only store strings, ints and floats. > > However, it would be very convenient if I could also store more general > objects. It seems to work for wx.Colour, but not for wx.Font. It raises a > "TypeError: can't pickle PySwigObject objects".
The object is wrapped by SWIG. So, python can not know anything about it and the object can not be pickled. As far as I see, there are two possibilities - define __getstate__ and __setstate__ in the c/c++-source or the .i file (used by swig). This is only possible if the source is available - use copy_reg (http://docs.python.org/lib/module-copyreg.html) to register a 'reduce' function (I never used that). I use the first option in the .i-File for a wrapped c++-class like this: %extend UMDMResult { %insert("python") %{ def __getstate__(self): return (self.v,self.u,self.l,self.unit,self.Z0,self.Eta0,self.t) def __setstate__(self,tup): self.this = _umddevice.new_UMDMResult(tup[0],tup[1],tup[2],tup[3]) self.thisown=1 (self.Z0,self.Eta0,self.t)=[i for i in tup[4:]] %} } regards Hans Georg Krauthaeuser -- http://mail.python.org/mailman/listinfo/python-list
