Hello,

Can not dump class object created on runtime.

Is there anybody can help me? Thank.

Following is testing code:

import pickle
from new import classobj

class A:
    def __str__(self):
        return self.__class__.name
    
if __name__ == "__main__":
    c = classobj('B', (A, ), {}) # create class obj on runtime
    print c
    print pickle.dumps(c) # get dump string

Bellows are outputs:

__main__.B
Traceback (most recent call last):
  File "C:\USERS\train\_work\test\test.py", line 11, in <module>
    print pickle.dumps(c)
  File "c:\USERS\train\Python25\lib\pickle.py", line 1366, in dumps
    Pickler(file, protocol).dump(obj)
  File "c:\USERS\train\Python25\lib\pickle.py", line 224, in dump
    self.save(obj)
  File "c:\USERS\train\Python25\lib\pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "c:\USERS\train\Python25\lib\pickle.py", line 748, in save_global
    (obj, module, name))
pickle.PicklingError: Can't pickle <class __main__.B at 0x00AF4CF0>: it's
not found as __main__.B

- Tommy
HZ 23026
MP 13958175281

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to