On 10/12/12 11:42 AM, Neal Becker wrote:
I wonder if there is a recommended approach to handle this issue.
Suppose objects of a class C are serialized using python standard pickling.
Later, suppose class C is changed, perhaps by adding a data member and a new
constructor argument.
It would see the pickling protocol does not directly provide for this - but is
there a recommended method?
I could imagine that a class could include a class __version__ property that
might be useful - although I would further expect that it would not have been
defined in the original version of class C (but only as an afterthought when it
became necessary).
You don't need to add anything to the actual attributes on the class. Just
define your __getstate__() dict to include a '__version__' item. You can treat
the absence of '__version__' in the dict that __setstate__() receives as
implying "version 0".
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
--
http://mail.python.org/mailman/listinfo/python-list