[Python-checkins] python/nondist/sandbox/datetime obj_delta.c,1.9,1.10

Tim Peters tim.one@comcast.net
2002年12月02日 13:10:56 -0500


[Guido]
> Try defining __reduce__.

OK ... but no joy:
 # XXX Pickling fails in the C implementation.
 # XXX timedelta has a __reduce__ method, which returns, e.g.,
 # XXX
 # XXX (<type 'timedelta'>, (), (1, 0, 0))
 # XXX
 # XXX but pickle then complains
 # XXX
 # XXX PicklingError: Can't pickle <type 'timedelta'>:
 # XXX it's not found as __builtin__.timedelta
In one way that's not a mystery:
>>> timedelta.__module__
'__builtin__'
>>> timedelta.__name__
'timedelta'
>>>
OK, if I change the name of the type to "_datetime.timedelta", pickling
completes, but on unpicking a new error pops up:
UnpicklingError: <type '_datetime.timedelta'> is not safe for
 unpickling
Arghghghgh ... OK, if I also give the type dict a __safe_for_unpickling__
attr, I guess it works.

AltStyle によって変換されたページ (->オリジナル) /