[C++-sig] pickling new-style classes object

Dmitri Mouromtsev dimour at mail.ru
Wed Oct 20 14:22:51 CEST 2004


Hello All,

Is it possible to customize pickling for class objects?
or these are pickled only by name using default implementation.

I need to save and restore custom class definition in different Python
sessions. For example:

  class Prototype(type):
    def __init__(cls, name, bases, dict):
      super(Prototype, cls).__init__(name, bases, dict)

  class C(object):
    __metaclass__ = Prototype

    def __init__(self, name):
      self.__name__ = name

If I define new class

  class New(C): pass
  New.a = 35
  New.b = 'string'

and new instance of 'New':

  x = New('New')

And trying to save 'New' and 'x':

  file = open('pickle_New.txt', 'w')
  dump(New, file)
  file = open('pickle_x.txt', 'w')
  dump(x, file)

I have only 'x' state saved.
__getstate__ and __setstate__ are not called for class instances(New).
What is the problem? Is there another way to resolve this problem?

Thanks.
Dmitri





More information about the Cplusplus-sig mailing list