On Thu, Mar 7, 2013 at 3:56 AM, Ben Sizer <kylo...@gmail.com> wrote:
> On Wednesday, 6 March 2013 16:22:56 UTC, Chris Angelico  wrote:
>>
>> Effectively, you would need to have a
>> subclass of list/dict/tuple/whatever that can respond to the change.
>
> This is certainly something I'd be interested in having, but I guess that 
> would be fragile since the user would have the burden of having to remember 
> to use those types.

Since you're already overriding setattr, you could simply force all
non-string sequences to your special subclass of list. That reduces
that burden, though it'd break if there are any other references to
the object.

>> What's the goal of this class? Can you achieve the same thing by
>> using, perhaps, a before-and-after snapshot of a JSON-encoded form of
>> the object?
>>
>
> I need to be able to perform complex operations on the object that may modify 
> several properties, and then gather the properties at the end as an efficient 
> way to see what has changed and to store those changes. Any comparison of 
> before-and-after snapshots could work in theory, but in practice it could be 
> expensive to produce the snapshots on larger objects and probably expensive 
> to calculate the differences that way too. Performance is important so I 
> would probably just go for an explicit function call to mark an attribute as 
> having been modified rather than trying to do a diff like that. (It wouldn't 
> work for rollbacks, but I can accept that.)

Hmm. Interesting. The perfect solution probably is too messy, yeah.
But if you have your subclassing done, you could possibly
snapshot-on-write, which would allow the rollback. Not sure if it'd
help though.

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to