how to detect if a dictionary has been modified ?

Stef Mientki stef.mientki at gmail.com
Sun Nov 23 04:58:34 EST 2008


Steven D'Aprano wrote:
> On Sun, 23 Nov 2008 01:18:17 -0800, bearophileHUGS wrote:
>
>   
>> Stef Mientki:
>>     
>>> I would like to detect if a dictionary has been changed. So I would
>>> like to have a modified-flag.
>>>       
>> A solution is of course to create a SDict class, that works like a
>> normal dict, and also watches for changes and has an extra boolean
>> attribute.
>>     
>
> What does the S stand for?
>
> Untested and possibly incomplete:
>   
thanks guys,
the code below looks what I'm looking for.

cheers,
Stef
> def factory(methodname, cls=dict, flag=True):
>     def method(self, *args, **kwargs):
>         self.modified = flag
>         return getattr(cls, methodname)(self, *args, **kwargs)
>     return method
>
>
> class SDict(dict):
>     __init__ = factory('__init__', flag=False)
>     __setitem__ = factory('__setitem__')
>     __delitem__ = factory('__delitem__')
>     clear = factory('clear')
>     pop = factory('pop')
>     popitem = factory('popitem')
>     setdefault = factory('setdefault')
>     update = factory('update')
>
>
>
>   




More information about the Python-list mailing list