[ZDP] BackTalk to Document Zope Developer's Guide (2.4 edition)/ZODB Persistent Components
nobody@nowhere.com
nobody@nowhere.com
Fri, 06 Sep 2002 09:49:31 -0400
A comment to the paragraph below was recently added via http://www.zope.org/Documentation/Books/ZDG/current/Persistence.stx#3-56
---------------
One tricky type of non-persistent, shared objects are mutable
default arguments to functions, and methods. Default arguments
are useful because they are cached for speed, and do not need to
be recreated every time the method is called. But if these cached
default arguments are mutable, one thread may change (mutate) the
object when another thread is using it, and that can be bad. So,
code like::
def foo(bar=[]):
bar.append('something')
% Anonymous User - Sep. 6, 2002 9:49 am:
need more explanation, please: what if foo is a method of class FooClass(Persistence.Persistent)? Does the
persistence machinery guarantee threadsafety for argument 'bar' or we are in trouble all the same?
Put another way, arguments of methods in persistent classes are persistent or not?