[Python-bugs-list] [ python-Bugs-494904 ] Cannot pickle a class with a metaclass
noreply@sourceforge.net
noreply@sourceforge.net
Tue, 18 Dec 2001 20:52:22 -0800
Bugs item #494904, was opened at 2001-12-18 20:52
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=494904&group_id=5470
Category: Type/class unification
Group: Not a Bug
Status: Open
Resolution: None
Priority: 5
Submitted By: Dan Parisien (mathematician)
Assigned to: Nobody/Anonymous (nobody)
Summary: Cannot pickle a class with a metaclass
Initial Comment:
when pickle retrieves the __reduce__ method of a new
style class that has a metaclass, instead of
returning the metaclass's __reduce__ method bound to
the class, it returns an unbound __reduce__ method of
that class.
>>> class metaclass(type):
... def __reduce__(self):
... """This is metaclass.__reduce__
... """
... return type.__reduce__(self)
...
>>> class newclass(object):
... __metaclass__ = metaclass
... def __reduce__(self):
... """This is newclass.__reduce__
... """
... return object.__reduce__(self)
...
>>> print newclass.__reduce__.__doc__
This is newclass.__reduce__
when pickle calls object.__reduce__ on newclass, it
returns an unbound newclass.__reduce__ and not a
bound metaclass.__reduce__. This has the unfortunate
side effect of not correctly 'reducing' the class.
I'm trying to figure out a solution.
----------------------------------------------------------------------
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=494904&group_id=5470