Теорія:

Поняття класу та об’єкту є основою об’єктно-орієнтованого програмування (ООП). Програма створюється як деяка сукупність об’єктів, які взаємодіють між собою. ООП базується на трьох основних принципах:інкапсуляція, наслідування  та поліморфізм. Розглянемо сутність цих принципів.

Об’єкти дозволяють об’єднувати функції (методи класу) та дані (змінні, що зберігають значення атрибутів) всередині одного елемента. Атрибути являють собою інформацію, а методи — дії. 
 
ОБ’ЄКТ = АТРИБУТИ + МЕТОДИ
Інкапсуляція — це об’єднання в межах класу певних даних і методів для роботы з ними. 
Наприклад, ми  описали клас Balloons, що представляє повітряні кульки,  який містить  дані про кульку: колір, висота, «надутість»,  і методи: змінити значення атрибутів в разі протикання кульки, збільшити розміри кульки тощо. При цьому клас стає новим типом даних в програмі, що створюється, і ми можемо  створювати змінні цього нового типу.
Наслідування — це можливість створення нового класу (нащадка) на базі існуючого (базового).
Розглянемо такі поняття, як людина та учень. Будь-яка людина має ім’я, прізвище, вік та інші загальні характеристики. Учень також має  ім’я, прізвище, вік, але, крім цього, він має додаткові характеристики: навчальний заклад, клас, середній бал успішності. З точки зору наслідування, учень є нащадком поняття людина. Таким чином, клас-нащадок містить ті самі  атрибути та методи, що й базовий клас, але при цьому його можна розширити через додавання нових методів  та атрибутів. Це позбавляє необхідності починати опис класу-нащадку «з нуля» — описувати атрибути й методи, успадковані від базового класу.
Приклад:
На основі базового класу Тварина створити 2 класи: Собака і Кіт, що мають власні методи.
class Animal():
    def __init__(self, name):
        self.name=name
    def breathe(self):
        print(self.name,' дихає')
    def eat_food(self,food):
        print(self.name, 'їсть', food)
class Dog (Animal):
    def guard(self):
       print(self.name, ' охороняє')
class Cat (Animal):
    def catchmouse(self):
       print(self.name,' ловить мишу')
dog1 = Dog("Cірко")
cat1 = Cat("Мурчик")
cat1.breathe() #
cat1.eat_food (' рибку')
dog1.eat_food (' кістку')
dog1.guard() # відправляємо собаку охороняти
cat1.catchmouse() # відправляємо кота на полювання
Поліморфізм — це різна поведінка методу в різних класах. Методи з однаковим ім’ям, описані в різних класах, можуть мати різну реалізацію.
Приклад:
Описати метод Голос для класів Собака і Кіт.
class Dog (Animal):
    def voice(self):
         print(self.name, ' Гав-гав')
class Cat (Animal):
    def voice(self):
         print(self.name, ' Мяу-мяу')
cat1.voice()
dog1.voice() 
Приклад:
Описати класи Трикутник і Квадрат. Додати до описів класів метод для обчислення площі фігури.
class Triangle:   
    def __init__(self, width, height):       
         self.width = width       
         self.height = height
    def getArea(self):       
         area = self.width * self.height / 2.0       
         return area
class Square:   
    def __init__(self, size):       
         self.size = size
    def getArea(self):       
         area = self.size * self.size       
         return area
myTriangle = Triangle(4, 5)
mySquare = Square(7)
s_triangle = myTriangle.getArea() 
print (s_triangle )  # буде надруковане 10.0
s_square = mySquare.getArea()
print (s_square)  # буде надруковане 49
Джерела:
Інформатика : підруч. для 7 кл. закл. загал. серед. освіти / [О. О. Бондаренко, В. В. Ластовецький, О. П. Пилипчук, Є. А. Шестопалов]. — Харків : Вид-во «Ранок», 2020.