Идея в том, что мы делаем дамп объекта cPickle и сохраняем его в нем же. А после, чтоб узнать, изменился ли объект – делаем его дамп еще раз и проверяем результаты. Так что кода строчек 5
вот что у меня получилось:
-
from cPickle import dumps
-
-
#base class for monitoring changes
-
class ChangesMonitor:
-
_cm_last_dump = None
-
def is_chaged(self):
-
prev_dump = self._cm_last_dump
-
self._cm_last_dump = None
-
cur_dump = dumps(self, -1)
-
self._cm_last_dump = cur_dump
-
return ( ( prev_dump is not None ) and ( prev_dump != cur_dump ) )
-
-
if __name__ == '__main__':
-
print 'Test Example'
-
-
#mix monitoring class with your common class
-
class MyGreateObject(ChangesMonitor,object):
-
one_val = 5
-
second_val = 7
-
def some_changes(self):
-
self.second_val += 5
-
-
#and testing
-
my_obj = MyGreateObject()
-
print my_obj.is_chaged()
-
print my_obj.is_chaged()
-
my_obj.some_changes()
-
print my_obj.is_chaged()
-
print my_obj.is_chaged()


Recent Comments