tricky cPickling

Gerrit Holl gerrit.holl at pobox.com
Thu Feb 17 20:58:11 CET 2000


Etienne Antoniutti Di Muro wrote on 950810383:
> This is my first message posted, so hi everybody !! :-)
> 
> 
> Recently I have experienced some problems using cPickle.load function.
> Here it comes:
> code is pretty simple:
> 
> class MyStuff:
>         def save(filename):

In classes, the first argument of a method must be 'self'. This is
needed to access instance-depentent attributes.

>                 obj = (GlobalVar1, GlobalVar2, GlobalVar3) #GlobalVar
> are instances of classes
>                 f = open(filename, "w")
>                 cPickle.dump(f, obj)
>                 f.close()
> 
>    def load(filename):

And the indentation is not consistent.

>            f = open(filename, "r")
>           (globalVar1, globalVar2, globalVar3) = cPickle.load(f)
>           f.close()
>           return obj
> 
> I experiece errors in unpickling only (MyStuff.load("MyFileName")), they
> are listed as follows:
> 
> 1_ NameErrors of some objects from modules used by the "GlobalVar"
> cPickled. (but please note that those modules are properly imported
> before cPickling);

You should type 'self.GlobalVar1' and create a first argument 'self'
to the methods

> 3_ Different behaviours (raised exceptions) of the script which uses
> MyStuff.load("MyFileName") method, according how i call it. Is it due to
> different exception managment of MacPython IDE instead of MacPython
> AppletBuilder ??

class Foo:
    def print_something(self, message):
        print "instance %s is printing: %s" % (self, message)

> 4_ Cause of those errors I can't embed MyClass in a C function, that is
> where i need it to work.
> 
> Any Suggestion ??

Yes :)

regards,
Gerrit.

-- 
cat: /home/gerrit/.signature: No such quote or joke




More information about the Python-list mailing list