Neal Becker <[email protected]> writes:
> 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).
The ZODB (Zope Object DataBase) is based on Python's pickle.
In the ZODB world, the following strategy is used:
* if the class adds a new data attribute, give it (in addition) a
corresponding class level attribute acting as "default" value
in case the pickled state of an instance lacks this
instance level attribute
* for more difficult cases, define an appropriate "__getstate__"
for the class that handles the necessary model upgrades
--
http://mail.python.org/mailman/listinfo/python-list