I am using gnosis.xml.pickle to convert an object of my own class to xml. The object is initialized so that:
self.logger = MyLogger()
But when I do dump the object to a string I get an exception stating that the pickler encountered an unpickleable type (thread.lock).
Is there a way to ‘tag’ the logger attribute so that pickler will know not to try and pickle that attribute?
You can define two methods,
__getstate__and__setstate__, to your class to override the default pickling behavior.http://docs.python.org/library/pickle.html#object.__getstate____getstate__should return a dict of attributes that you want to pickle.__setstate__should setup your object with the provided dict.Note that
__init__won’t be called when unpickling so you’ll have to create your logger in__setstate__