Теорія:

Об'єктно-орієнтований підхід у програмуванні
Програмування мовою Python є об’єктно-орієнтованим, тобто всі величини є об’єктами певного класу. Так, число 7 — це об’єкт, який належить класу int (цілих чисел). Клас задає поведінку об’єктів, створених на його основі. Ми можемо створити свій власний клас (тип) об'єктів.
Програму на Python  можна представити у вигляді взаємопов'язаних взаємодіючих між собою об'єктів.
Навіщо створювати власні класи? Уявімо, наприклад, що нам потрібно написати програму, в якій моделюється життя акваріумних рибок.Ми можемо описати клас Рибка, перелічити ті властивості акваріумних рибок, які важливі для нашої програми, і дії, які рибки можуть виконувати. Це допоможе створювати й графічно відображати нових рибок у нашій програмі, програмувати виконання рибками певних дій та зміну значень їхніх властивостей.
Поняття класу
Навколишній світ можна розділити на різні класи речей, такі як «коти» або «будівлі» або «рослини». Кожен клас речей включає певні об'єкти.
 
Наприклад, кішка Муха є об'єктом класу котів. Для об'єктів характерні різні властивості. Властивості служать для більш чіткого опису об'єктів. Їх можна порівняти з прикметниками в українській мові. Наприклад, кішку Муху можна описати такими властивостями як зріст, вага і рядом інших. Якщо є певний об'єкт, з яким повинен працювати комп'ютер, то нам необхідно створити деякий опис об’єкта для використання в програмі.
Клас — це опис об’єктів певного типу. Клас - це деякий шаблон, на основі якого будуть створюватися його екземпляри — об'єкти.
 
Об’єкт — це екземпляр деякого класу.
авто.png
 
Клас визначає те, якими властивостями володіють всі представники цього класу. Якщо мавпа має властивість Вага, то ця властивість є у всіх об'єктів класу. Описуючи деякі характеристики класу, ми задаємо можливі властивості всіх об'єктів цього класу.
 
Зверни увагу!
Значення властивостей у кожного об'єкта свої.
Методи — це дії, які можуть виконувати об'єкти цього класу.
Якщо ми в нашій програмі визначимо для класу Тварини метод Їсти, то всі об'єкти цього класу можуть їсти. Визначивши в класі властивості та методи, ми задаємо можливості конкретних об'єктів, моделюємо, які дії вони можуть здійснювати і якими властивостями володіють.
Опис класу
Опис класу розташовується на початку коду програми.
Синтаксис опису класу такий:
сlass Ім’я_класу():
          def __init__ (self, <перелік атрибутів (властивостей) класу >): 
               self.змінна = значення
Метод  __init__ називається конструктором класу.
Він автоматично виконується при створенні кожного нового екземпляра на базі даного класу.  Ім’я методу починається і закінчується двома символами підкреслення. У списку атрибутів (властивостей) класу першим має бути параметр self, він потрібен для зв’язку з конкретним об’єктом.

Можна вважати, що клас — це своєрідна інструкція зі створення екземплярів.
Приклад:
Опишемо клас Dog(), що моделює собаку. Включимо в клас Dog спільні для собак характеристики: кличка, порода, вік. Ці характеристики стануть атрибутами класу Dog.
сlass Dog():
         def __init__ (self, name, breed, age):
                         self.name = name
                         self.breed = breed
                         self.age = age
Створення об'єктів
Створення об’єкта на основі класу називають створенням екземпляра якогось конкретного предмета.
Об’єкт створюють за такою інструкцією:
змінна = Ім’я_класу(<перелік атрибутів>)
Далі в програмі з’являється об’єкт, доступ до якого можна отримати через ім’я змінної. Об’єкт отримує атрибути його класу.
 
 
Атрибути класу — це імена змінних, у яких зберігаються значення властивостей об’єктів.
 
 
Створимо об'єкт dog1 класу Dog, який представляє екземпляр собаки з кличкою Рекс,  породи пудель,  віком 5 років.
dog1 = Dog('Рекс', 'пудель', 5)
 
При виконанні даного оператора викликається конструктор класу __init__ .
 
Метод __init__ створює об'єкт  dog1 і присвоює атрибутам об'єкта name, breed, age  передані значення.
 
Під час виклику методу дотримуйся відповідності між списком значень і списком атрибутів у заголовку методу: кількість; порядок розташування; збіг типів.
 
3.PNG
 
На основі класу можна створити стільки екземплярів, скільки потрібно. Створимо другий екземпляр класу Dog з іменем dog2:
dog2 = Dog('Альма', 'коллі', 2)
Доступ до атрибутів об’єкта
Для звернення до атрибутів екземпляра використовується запис через крапку: об’єкт.атрибут.
Наприклад, звернення до значення атрибута name екземпляра dog1: dog1.name.
  
Конструкція dog1.name має значення, що було передане атрибуту self.name при створенні об’єкта dog1.
Приклад:
Виведемо повідомлення про об'єкт dog1:
print ('Кличка', dog1.name)
print ('Вік – ', dog1.age, ' років')
Отримуємо відомості про екземпляр my_dog:
Кличка Рекс
Вік – 5 років
Можна змінити значення атрибута за допомогою оператора присвоєння:
dog1.name = 'Лессі'
Джерела:
Інформатика : підруч. для 6 кл. закл. загал. серед. освіти / [О. О. Бондаренко, В. В. Ластовецький, О. П. Пилипчук, Є. А. Шестопалов]. — Харків : Вид-во «Ранок», 2019