pickle question: sequencing of operations
Ian Kelly
ian.g.kelly at gmail.com
Wed May 9 16:34:06 EDT 2012
On Wed, May 9, 2012 at 1:39 PM, Russell E. Owen <rowen at uw.edu> wrote:
> I was wondering. I override __new__ (and __init__) to print messages and
> was quite surprised to only see __new__being called when the object was
> first created, not when it was being unpickled. But maybe there's
> something funny about my override that caused unpickle to ignore it and
> use the default version. I hope so. I can't see how the object could be
> constructed during unpickle without calling __new__. But that's one
> reason I was curious about the unpickling sequence of operations.
You're probably pickling with the default protocol. Unpickling calls
an overridden __new__ method only if the pickle protocol is at least
2. Using protocol 0 or 1, new-style class instances are constructed
with the base object.__new__ instead.
More information about the Python-list
mailing list