On Wed, May 9, 2012 at 1:39 PM, Russell E. Owen <ro...@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. -- http://mail.python.org/mailman/listinfo/python-list