[Zope] Restarting Zope makes Values in python class disappear

Mark N. Gibson mark@ifopen.com
Tue, 4 Apr 2000 09:38:34 -0600 (MDT)


Just what I needed - Thanks!

Mark
> 
> ----- Original Message -----
> From: Mark N. Gibson <mark@ifopen.com>
> > I've got a simple python class that has a data member that holds a list of
> > strings (among other things).  I can laod values into this list fine.
> > And can query the object and the list is populated.  However, after  I
> > restart Zope,  the list for the class instance is empty.  The other data
> > values in my class retain their values just fine.
> 
> You're probably mutating the list without informing the instance that you've
> changed it.  If you do:
> 
> thing.stufflist[4] = 'newstring'
> 
> or
> 
> thing.stufflist.append('newstring')
> 
> ...then 'thing' has no way of knowing that 'stufflist' has changed, unless
> you replace 'stufflist':
> 
> # This can be confusing, since it doesn't look like it does anything
> thing.stufflist = thing.stufflist
> 
> ... or tell 'thing' explicitly:
> 
> # This is the official interface to mark an object changed
> thing._p_changed = 1
> 
> Your changes will also get saved if you happened to change any other
> attributes of 'thing' in the same transaction, but as you've discovered this
> is unreliable at best.  Explicit is better.
> 
> Cheers,
> 
> Evan @ digicool & 4-am
>