[Python-Dev] Pickle implementation questions
Bruce Christensen
t-bruch at microsoft.com
Fri Jun 30 19:16:54 CEST 2006
Thanks for your responses, Martin!
Martin v. Löwis wrote:
> Bruce Christensen wrote:
> > - Where are object.__reduce__ and object.__reduce_ex__ defined, and how
> > does copy_reg._reduce_ex fit into the picture?
>
> See
>
> http://docs.python.org/lib/node69.html
So just to be clear, is it something like this?
class object:
def __reduce__(self):
return copy_reg._reduce_ex(self, -1)
def __reduce_ex__(self, protocol):
return copy_reg._reduce_ex(self, protocol)
Does _reduce_ex's behavior actually change depending on the specified protocol version? The only difference that I can see or think of is that an assert causes it to fail if the protocol is >= 2.
> > - What does copy_reg.constructor() do?
>
> It does this:
>
> def constructor(object):
> if not callable(object):
> raise TypeError("constructors must be callable")
So it is part of the public interface? It's exported in __all__, but it appears
that it's undocumented.
Thanks,
--Bruce
More information about the Python-Dev
mailing list