Теорія:

Коли ми складаємо програму, ми намагаємось змоделювати певну реальну ситуацію або явище (розв‘язування рівняння, хід гри, створення зображення тощо).
В загальному випадку потрібно виконати такі кроки:
1 — виявити об'єкти, якими буде маніпулювати наша програма;
2 — описати властивості об'єктів;
3 — описати методи (обмежений набір дій об‘єкта);
4 — запрограмувати обробку подій (що об'єкт має зробити у відповідь на подію).
9.PNG
Поняття події
Подія — це вплив на об’єкт, що відбувається в програмі.
Для того, щоб програма відреагувала на подію, слід створити обробник події – окремий блок програмного коду, який виконується при настанні події, з якою він пов’язаний.
У відповідь на події об'єкт виконує метод, тобто подією ми будемо вважати виклик методу, що описаний у класі. 
Опис методів
Методи — це дії, що можуть виконувати об’єкти даного класу.
Якщо умовно об’єкти вважати іменниками, то їхні методи — дієсловами. Якщо уявити об’єкт як окрему річ, то його методи визначають, як він взаємодіє з іншими речами.
Опис методу:
def назва_методу(self, <перелік параметрів>):
        <тіло методу>
Замість параметра self у разі виконання методу підставляється ім’я конкретного об’єкта.
 
10.PNG

Опишемо клас Dog. Відомо, що більшість собак вміють подавати голос за командою. Включимо в клас Dog дію «подавати голос».
class Dog():
       def __init__(self, name):
                 self.name = name
       def voісe(self): # Собака подає голос за командою
                 print(self.name, ' гавкає. Гав-гав!')
Екземпляри класу Dog, які будуть створені в програмі, зможуть викликати метод voісe().
Виклик методів
Виклик методу для конкретного об’єкта має вигляд:
об’єкт.назва_методу(<перелік значень>)
Створимо екземпляр класу Dog і викличемо для нього метод voісe():
my_dog = Dog('Сірко')
my_dog.voісe()
 
Під час обробки команди my_dog.voісe() середовище Python шукає метод voісe() у класі Dog і виконує його код.
Об’єкт виконує команди. Отримуємо результат виконання   дії:
Сірко гавкає. Гав-гав!
  
Можна викликати метод і передавати йому деяке значення параметра. Змінна, яка прийматиме значення параметра, має знаходитися в списку параметрів у заголовку метода.
Приклад:
При виклику методу передається значення для змінної а: 
class Dog():
       def __init__(self, name):
                 self.name = name
       def voісe(self, а): 
                 for i in range(a): print(self.name, ' гавкає. Гав-гав!')
my_dog = Dog('Сірко')
my_dog.voісe(3)
11.PNG
Оператор print в тілі метода voісe виконається 3 рази:
Сірко гавкає. Гав-гав!
Сірко гавкає. Гав-гав!
Сірко гавкає. Гав-гав!
Методи можуть змінювати значення властивостей (атрибутів) об’єкта, виконувати інші дії над об’єктами.
Приклад:
Створимо клас Car(). Метод __init__() класу Car() має містити атрибути для збереження інформації про кількість пального (fuel) та шлях, пройдений автомобілем (mileage). Додамо до класу метод  vitr(self), який зменшує значення атрибута  fuel, і метод  zapr(self) (заправка), який збільшує значення атрибута  fuel на 10 л.
class Car().
     def __init__(self, mileage, fuel):
        self.mileage = mileage
        self.fuel = fuel
     def zapr(self):           #Запрaвка
        self.fuel=self.fuel+10
        print(" Запрaвка ")
     def vitr(self):             #Витрата пального на 50 км
        self.fuel=self.fuel - 3
        print(" Залишилось пального ", car1.fuel)
car1 = Car(0, 0)   # створено екземпляр  car1 класу  Car() із параметрами  0,  0.
print("Пробіг ", car1.mileage)
car1.zapr()   # «заправимо» авто
a = int( input('Відстань?'))   # введення значення відстані, яку потрібно проїхати
while a > 0:
        print ('ЇDEMО!')
        a = a -50  # зменшити значення відстані на 50 км
        car1.vitr()  #  викликати для об’єкта car1 метод  vitr()
        if car1.fuel<3: #  якщо пального залишається менше за 3 л, 
                car1.zapr()  #  викликати для car1 метод  zapr().
print('FINISH!')
Джерела:
Інформатика : підруч. для 6 кл. закл. загал. серед. освіти / [О. О. Бондаренко, В. В. Ластовецький, О. П. Пилипчук, Є. А. Шестопалов]. — Харків : Вид-во «Ранок», 2019