Конечно можно. Нужно использовать дискрипторы, в очень облегченном виде что то типа:
class Notepad:
def __init__(self):
self._is_change = False
self.code = None
def __setattr__(self, key, value):
if key is 'code' and value is not None:
self.__dict__['_is_change'] = True
self.__dict__['code'] = value
else:
self.__dict__[key] = value
def save(self):
print('Тут вот сохранили данные на диск')
self._is_change = False
@property
def is_change(self):
return self._is_change
note_text = Notepad()
print('is_change {}'.format(note_text.is_change))
print('Изменили данные в self.code')
note_text.code = 'bla bla'
print('is_change {}'.format(note_text.is_change))
note_text.save()
print('is_change {}'.format(note_text.is_change))
на выходе получим
is_change False
Изменили данные в self.code
is_change True
Тут вот сохранили данные на диск
is_change False