How can I make a dictionary that marks itself when it's modified?
Steve Holden
steve at holdenweb.com
Thu Jan 12 13:28:54 EST 2006
garabik-news-2005-05 at kassiopeia.juls.savba.sk wrote:
> sandravandale at yahoo.com wrote:
>
>>It's important that I can read the contents of the dict without
>>flagging it as modified, but I want it to set the flag the moment I add
>>a new element or alter an existing one (the values in the dict are
>>mutable), this is what makes it difficult. Because the values are
>>mutable I don't think you can tell the difference between a read and a
>>write without making some sort of wrapper around them.
>>
>>Still, I'd love to hear how you guys would do it.
>
>
> if the dictionary is small and speed not important, you can wrap it
> in a class catching __getitem__ and __setitem__ and testing
> if repr(self) changes.
>
>
d = {1: [a, b],
2: [b, c]}
d[1][0] = 3
How would this work? __getitem__() will be called once, to get a
reference to the list, and so there's no opportunity to compare the
'before' and 'after' repr() values.
regards
Steve
--
Steve Holden +44 150 684 7255 +1 800 494 3119
Holden Web LLC www.holdenweb.com
PyCon TX 2006 www.python.org/pycon/
More information about the Python-list
mailing list