On Thu, Sep 25, 2008 at 4:24 AM, Steve Collins <[EMAIL PROTECTED]> wrote:
> However, some of the instances refer explicitly to other instances > instances. It's obvious why this causes problems. It occurred to me to > simply replace the instances with the ones in the un-pickled list, but I > don't know how. > I tried using the following approach: > > class Z: > def __init__(self,y): > self.y = y > def replaceZ (self,withWhat): > self = withWhat 'self' is just another parameter passed to the method, so this just rebinds a local name. This example doesn't seem to illustrate the situation you describe. You can replace the 'y' attribute of a Z object by assigning to it. One solution might be to make all your objects pickleable. Pickle tracks object references and handles embedded references correctly. > That doesn't raise any errors, but it also doesn't work: > >>>> a = X(10) >>>> b = X(20) Presumably this should be Z(10), Z(20) ? >>>> print a.y > 10 >>>> print b.y > 20 >>>> b.replaceZ(a) >>>> print b.y > 20 If you want 'b' to refer to the same thing as 'a', just assign b = a I think you have some common misconceptions about the nature of variables and assignment in Python. This may help: http://personalpages.tds.net/~kent37/kk/00012.html Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor