class StainableDict(types.DictType):\n isDirty = False\n \n def __init__(self, data=None):\n if data is not None: self.update(data)\n self.isDirty = False\n \n def __setitem__(self, key, value):\n types.DictType.__setitem__(self, key, value)\n self.__dict__['isDirty'] = True
Fun. :) I know Python has warts, but I have yet to get hit by them.