[Zope3-Users] What attributes are made persistent

Tom Dossis td at yoma.com.au
Tue Feb 14 18:52:46 EST 2006


Peter Bengtsson wrote:
>>
>>>    def __init__(self):
>>>        self.queue = {}
>>>
>>>
>>>self.queue seem is empty each time I restart Zope.
>>That's because dictionaries are not derived from Persistent. Try PersistentDict.
>>
> D'oh! That's confusing. Isn't there a class that gathers all of these in one.
> 
> It seems confusing, you derive from Persistent but only some are accepted.
> Does that mean that there's PersistentFloat and PersistentTuple too?
> If not, why *only* dicts?

No, this issue applies to mutable attributes..

self.a = 1.1
self.b = (1,2,3)
self.b = (4,5,6)

These will persist as is, because you're rebinding the attribute 
(reference) each time.

However, for ...

self.queue[1] = 2

This doesn't rebind self.queue.
So another way you could 'persist' this change is ..

self.queue[1] = 1
self.queue = self.queue


More information about the Zope3-users mailing list