Вступ у спадщину в Python

Python, похвалившись можливостями мульти-парадигми, очевидно, відповідає об'єктно-орієнтованому стилю програмування. І будь-яка мова не може бути досить смішною, щоб вимагати об'єктно-орієнтованої методології, не надаючи підтримку успадкування, включаючи python. Python забезпечує виразно неповторний аромат успадкування, що дозволяє надзвичайно потужні операції, які не бачилися раніше. Хоча це має деякі обмеження, наприклад, на даний момент, безпека через сферу дії для членів класу досягається лише умовно, і не є суттєвою частиною мови. Таким чином, члени, оголошені приватними, фактично доступні публічно з деякими модифікаціями.

Синтаксис класу

Синтаксис для визначення похідного класу при спадкуванні одного або декількох базових класів є наступним:

class derivedClassName(baseClassName(, …)):


Як показано, похідний клас визначає розділений комами список базових класів, які слід успадковувати у заголовку визначення класу.

Класна кухня

Почнемо з визначення базового класу, який використовується для всіх наших прикладів:

class cuisine():
def __init__(self, type):
self.type = type
returncooked_cuisine = new cuisine('cooked')

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

Типи спадкування в Python

В основному існує два типи успадкування, поєднання яких дає всі інші види.

1. Поодиноке спадкування: Один базовий клас, успадкований одним похідним класом. Це найпростіший вид успадкування. Також мінімально можливий. Похідний клас автоматично викликає конструктор базового класу.

2. Множинне спадкування: Кілька базових класів, успадкованих одним похідним класом. Конструктори базового класу викликаються в тому порядку, в якому були отримані класи.

Похідні типи спадкування

Поєднання вищевказаних форм успадкування може призвести до наступних видів спадкування:

1. Ієрархічне спадкування: Один базовий клас успадковується декількома похідними класами. Кожен похідний клас буде працювати незалежно, але об'єкти діляться змінними класу в різних класах.

2. Багаторівневе спадкування: похідний клас, який служить базовим класом для іншого похідного класу. У цьому випадку конструктори базового класу викликаються рекурсивно.

3. Гібридне спадкування: поєднання декількох примірників вищезазначених типів успадкування. Це може призвести до будь-якої уявної комбінації класів.

Приклади спадкування в Python

Нижче наведено приклади успадкування Python:

1. Одномісне спадкування

Давайте створимо клас під назвою Індійська кухня, який успадковує класову кухню.

class indian_cuisine(cuisine):
def __init__(self, type, place):
super().__init__(type)
self.place = place
returnindian_cuisine = new cuisine('cooked', 'India')

Як показано в новому класі, indian_cusine був створений, який приймає параметр типу і викликає конструктор базового класу, передаючи параметр. Це додатково створює нове місце змінної об'єкта . Це використовується лише у похідному класі та не видно об’єктам базового класу.

2. Ієрархічне спадкування

Давайте створимо клас під назвою ItalianCuisine, який успадковує класову кухню:

class italian_cuisine(cuisine):
def __init__(self, type, place):
super().__init__(type)
self.place = place
returnitalian_cuisine = new cuisine('cooked', 'Italy')

Як показано в новому класі, було створено italian_cusine, який приймає параметр типу і викликає конструктор базового класу, передаючи параметр. Це додатково створює нове місце змінної об'єкта . Це використовується лише у похідному класі та не видно об’єктам базового класу. Тепер, оскільки два класи, indian_cusines і Italian_cuisine успадковують клас кухні, існує реалізована ієрархічна спадщина.

3. Множинне спадкування

Давайте створимо клас під назвою FineDineCuisine, який успадковує від декількох класів.

class fine_dine_cuisine(indian_cuisine, italian_cuisine):
def __init__(self, type, place, portion_size):
super().__init__(type, place)
self.portion_size = portion_size
returnfine_dine_cuisine = new cuisine('cooked', 'India', 4)

Новий клас fine_dine_cuisine, успадковує як indian_cuisine, так і Italian_cuisine, успадковуючи їх параметри. Він приймає тип параметрів, місце та розмір_розміру. тип і місце передаються як аргументи для конструкторів базового класу. part_size - це новий параметр об'єкта, який не поділяється на базові класи.

Примітка про спадкування Diamond:

Оскільки і індійська_кухня, і італійська_кусіна успадковуються з класу кухні, вона утворює класичний випадок успадкування алмазів, де для похідного класу безпосередньо / опосередковано присутні декілька примірників базового класу. У більшості мов, як-от c ++, це спричиняє проблему, або використовуються абстрактні класи. З іншого боку, Python вказує, що це власне інноваційне рішення. Він успадковує загальні методи та атрибути лише один раз, віддаючи перевагу класам у порядку спадкування. Таким чином, тут, оскільки кухня успадковується двічі, перевага надається версії кухні індійської кухні, оскільки вона успадковується першою.

Примітка для учасників класу:

Будь-який атрибут, визначений у визначенні класу, але не у межах функції, стає атрибутом класу та ділиться на всі примірники класу. Таким чином, якщо один об'єкт змінює будь-який з цих атрибутів класу, зміни можуть бути видимими для всіх інших примірників (будь-якого об’єкта класу або похідного об'єкта класу). Тому будьте обережні, використовуючи атрибути класу, відсутні в жодному визначенні методу.

Висновок - Спадщина в Python

Python ще раз визначив дуже гнучку, пристосовану та потужну для використання, коли орієнтована на об’єкт парадигма є кращим маршрутом. Це, безумовно, концепція, яку кожен може використовувати і повинна мати під поясом. Ці поняття використовуються для формування будівельних блоків будь-якого масштабованого та ремонтованого програмного забезпечення.
Завдяки цьому базовому вступу до спадкування в python, ви можете продовжувати та орієнтуватися на твердження про проблеми в реальному світі та бачити, наскільки хороший дизайн ви здатні думати.

Рекомендовані статті

Це путівник по спадщині в Python. Тут ми обговорюємо вступ, синтаксис та типи спадкування в Python разом з різними прикладами та його кодовою реалізацією. Ви також можете ознайомитися з іншими запропонованими нами статтями -

    1. Спадщина на Java
    2. Що таке спадкування в програмуванні?
    3. Спадщина в C #
    4. Перевагу в Java
    5. Спадщина в PHP
    6. Оголошення абстрактного класу в C # з прикладом