[Zope-dev] adding attributes to a python product

Jeff K. Hoffman jeff.hoffman@goingv.com
Thu, 29 Jun 2000 11:09:02 -0400 (EDT)


On Thu, 29 Jun 2000, Steve Alexander wrote:

> Hi folks,
> 
> Is there any way of interacting with the ZODB persistence machinery to
> add the default attribute to all instances as they are brought out of
> persistent storage -- so that I can just restart Zope, and have all of
> my instances updated as I use them ?

In addition to the method Bryan detailed, you should look into the
__setstate__() method.

From http://www.zope.org/Members/michel/HowTos/ZODB-How-To:

  "When an object is activated by the object database and brought into
   memory, it's __setstate__() method is called. A Persistent class can
   override this method to initialize the object every time it is brought
   into memory.

   __setstate__() is also useful to upgrade an object from one version to
   another. If you add instance attributes to your product, older versions
   of the instances of that product will not have the new attribute.
   __setstate__ can check for the existance of new attributes, and create
   them with sane defaults in older versions of the instance."

> Thanks for any help.

Hope this helps.

--Jeff

---
Jeff K. Hoffman                               704.849.0731 x108
Chief Technology Officer                      mailto:jeff.hoffman@goingv.com
Going Virtual, L.L.C.                         http://www.goingv.com/