Miles Waller wrote at 2006-6-12 16:58 +0100:
>Does anyone have a good approach to changing the class of an object 
>already stored in the ZODB?

This is *very* difficult.

The main problem is that the class is usually coded (for efficiency
reasons) in the
persistent references to an object. As soon as the container
is loaded from the ZODB, a ghost is created for its persistent
reference using the class mentioned there.

This means: it is not safe to change the class of a persistent object
  unless you although modify all its containers (otherwise, some
  persistent references remain with the old class. This potentially
  leads to non-deterministic behaviour).

I usually solve you problem with proxy classes:

  When I want to refactor something, I do, but
  leave at the old place something like:

        from NewPlace import NewClass as OldClass

Zope maillist  -
**   No cross posts or HTML encoding!  **
(Related lists - )

Reply via email to