Объяснение self в python:
dog: у котов внутри есть мурчалка
dog: она реализована для всех котов в классе кот
dog: в объекте кот надо как то вызвать метод мурчало у класса кот
dog: как ты это сделаешь?
dog: кот.мурчало()
dog: ежели ты вызовешь кот.мурчало(), муркнут сразу все коты на свете
dog: а ежели ты вызовешь self.мурчало(), муркнет только тот кот, на которого указывает self