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 - Zope@zope.org
** No cross posts or HTML encoding! **
(Related lists -