On Sat, 12 Aug 2006 18:36:32 +0200, Anton81 <[EMAIL PROTECTED]> wrote: >Hi! > >it seems that > >class Obj: > def __init__(self): > f=file("obj.dat") > self=pickle.load(f) >... > >doesn't work. Can an object load itself with pickle from a file somehow? >What's an easy solution?
You are trying to implement a constructor (__new__) for the Obj class, but you have actually implemented the initializer (__init__). In order to be able to control the actual creation of the instance object, you cannot use the initializer, since its purpose is to set up various state on an already created instance. Instead, you may want to use a class method: class Obj: def fromPickleFile(cls, fileName): return pickle.load(file(fileName)) fromPickleFile = classmethod(fromPickleFile) You can then use this like so: inst = Obj.fromPickleFile('obj.dat') Jean-Paul > >Anton >-- >http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list