Pickling slotted instances

Martin v. Loewis martin at v.loewis.de
Mon Sep 16 01:37:23 EDT 2002


Andrew McNamara <andrewm at object-craft.com.au> writes:

> I'm really just wondering what makes the solution space large: my
> superficial understanding suggests all the necessary information is
> readily available for serialising the object's state (but I can see
> metaclasses make it complex).

I don't know what issues Guido had in mind, but here are a few for
consideration:

1. How to determine all slots? It has been proposed that __slots__
   should return a tuple that includes base slots as well;
   alternatively, iterate over base types yourself. Alternatively,
   return slots in __dict__.

2. Should all slots be pickled unconditionally? You seem to expect
   this, but Samuele Pedroni points out that, in Java, some slots can
   be marked transient, to avoid pickling them.

3. How to pickle slots? You are suggesting that the list of slot names
   is included, but that appears to be redundant - if you know the type,
   you also know what slots it has.

4. How to pickle unset slots? If a type has a slot but the instance
   has not assigned the slot, requesting the slot value raises an
   AttributeError.

If you are in doubt that this is really as tricky as presented, I'd
encourage you to come up with a patch. In the process of implementing
the patch, you may either find that all issues have a straight-forward
solution, or that there are really serious issues remaining.

Regards,
Martin



More information about the Python-list mailing list