Как в python отследить изменился ли параметр в классе?
Конечно можно. Нужно использовать дискрипторы, в очень облегченном виде что то типа: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_changenote_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
И вот таких свойств у меня куча.
Инкапсулировать в класс значит, и где нужно юзать либо его, либо наследника.