[Chris Spencer] > Instead of requiring all persistable objects to inherit a special class, > wouldn't it be possible to dynamically wrap a class's __setattr__ and/or > __setitem__ methods to determine when an object's been modified?
I'm not clear on what you're trying to accomplish, but any persistence system needs to do a lot more than just note when an attribute has changed. For example, it also needs ways to avoid loading the transitive closure of all persistent state reachable from a persistent object P when P is loaded, and to materialize reachable state as needed as attributes of P get referenced; it needs ways to manage caches of persistent objects; it needs a way to associate unique identifiers (object ids; oids) with persistent objects; it needs to associate objects with the connections from which they were loaded; etc. .. [snipped implementation sketch, because I don't understand its goal] .. > I understand this has some drawbacks. Namely, it will only work for > new-style classes, but for a large code base this might be easier than > manually writing _p_changed = 1 everywhere. If that's the goal, you may be alone in caring about it ;-): manual fiddling of _p_changed is rarely needed outside the _implementation_ of persistence. If you find yourself doing it a lot, there may be a flaw in your design, or in your mental model of how persistence in ZODB actually works. _______________________________________________ For more information about ZODB, see the ZODB Wiki: http://www.zope.org/Wikis/ZODB/ ZODB-Dev mailing list - ZODB-Dev@zope.org http://mail.zope.org/mailman/listinfo/zodb-dev