Le mardi 19 juin 2012 19:54:21, Claudiu Saftoiu a écrit :
>         def calc_it(self, b):
>             if not hasattr(self, 'b_cache'): self.b_cache =
> PersistentDict()

If you were to use this, you would probably prefer to do
    try:
        self.b_cache
    except AttributeError:
        self.b_cache = PersistentDict()
(assigning the result to a vairable, etc)
as this is faster when b_cache is actually here (which is much more likely 
than not). Also, it avoids hiding too many exceptions, as with hasattr. In the 
times of ReadConflictError it was quite important (at least to stop processing 
earlier on a doomed transaction). I'm not sure how important this is nowadays 
- I just kept the habit of avoiding "hasattr" on persistent objects.

> The former is OK, but if I have multiple functions that want to use the new
> functionality I'll have to have the code all over, and it won't be obviously
> separated.

Maybe a @property taking care of creating the actual PersistentDict if not 
present, then ?

-- 
Vincent Pelletier
_______________________________________________
For more information about ZODB, see http://zodb.org/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev

Reply via email to