Pythonicway - успадкування в python

Одним з чотирьох принципів ООП є спадкоємство (разом з абстракцією. Інкапсуляції. Поліморфізмом).

При створенні нового об'єкта (класу), як в програмуванні, так і в реальному житті, ми можемо використовувати 2 підходи:

  1. Створити екземпляр з нуля.
  2. Використовувати вже існуючий об'єкт і обробити напилком довести до потрібного нам стану.

Безумовно, другий метод набагато ефективніше, простіше і вимагає менших зусиль. Легше вивести нову породу котів схрестивши існуючі породи, ніж намагатися створити тварина з нуля.

Візьмемо більш практичний приклад. Уявімо, що перед нами стоїть завдання запрограмувати клас дерева. Наше дерево має такі атрибути: вид, вік і висоту. Так само дерево має здатність рости (при цьому буде збільшуватися його висота і вік) і здатністю виводити інформацію про себе.

Для перевірки створимо екземпляр класу дерево і трохи пограємо з ним.

Pythonicway - успадкування в python

Тепер уявімо, що наша задача ускладнюється: нам необхідно додати клас фруктового дерева, у якого будуть ті ж атрибути і методи, але на додаток з'явиться метод збору врожаю фруктів. Звичайно, ми можемо створити з нуля клас FruitTree і переписати наново весь код, який буде практично ідентичний тому що ми вже написали, але це буде неефективно, крім того, порушується принцип DRY (Do not Repeat Yourself). Замість цього ми можемо скористатися спадкуванням. тобто створити клас FruitTree і вказати йому як батько клас Tree. Таким чином, FruitTree отримає доступ до всіх атрибутів і методів, якими володіє клас Tree.

Як вказати батьківський клас в Python.

Батьківський клас поміщається в дужки після імені класу.

Таким чином, наш код для класу фруктового дерева буде наступним:

Створимо екземпляр класу FruitTree:

Pythonicway - успадкування в python

Навіщо використовувати спадкування.

Концепція спадкування в програмуванні дозволяє скоротити час розробки, спростити процес написання програми як зараз, так і в майбутньому, коли замовник захоче внести "невеликі правки" в проект. Правильно спроектований клас це, крім іншого, гнучка структура, яку ви вільно зможете змінювати, доповнювати в майбутньому. Важливо пам'ятати, що іноді простіше створити додатковий базовий клас, успадковувати від нього і розширювати в міру необхідності, ніж відразу написати готовий клас.

У нашій наступній статті ми розглянемо множинне успадкування в Python.

Схожі статті