Об’єктно-орієнтоване програмування (ООП) в Python

 18791

Python — це універсальна мова програмування, яка підтримує різні парадигми програмування, включаючи об’єктно-орієнтоване програмування (скор. “ООП”) з використанням об’єктів та класів.

Об’єкт — це будь-яка сутність, яка має атрибути (дані) та поведінку (методи/функції). Наприклад, кошеня — це об’єкт. В нього є:

   атрибути — ім’я, вік, колір тощо.

   поведінка — бігає, нявкає, спить і т.д.

Клас — це креслення (план) цього об’єкта.

Клас та об’єкти в Python

Результат:

Blu is 10 years old
Woo is 15 years old

Ми створили клас Cat з двома атрибутами: name та age. Потім ми створили екземпляри (об’єкти) класу Cat: cat1 та cat2 — це посилання на наші нові об’єкти. Ми звертаємось до атрибутів екземплярів та присвоюємо їм значення, використовуючи ім’я екземпляра та оператор ..

Спадкування в Python

Спадкування — це спосіб створення нового класу, використовуючи дані вже існуючого класу без внесення змін до нього. Створюваний клас є дочірнім (або “похідним”) класом, а існуючий клас є батьківським (або “базовим”) класом.

Результат:

I can eat!
I can sleep!
I can bark! Woof woof!

Тут dog1 (об’єкт дочірнього класу Dog) має доступ до членів батьківського класу Animal через те, що клас Dog успадкований від класу Animal.

Інкапсуляція в Python

Інкапсуляція — це об’єднання атрибутів і методів всередині класу, яке запобігає доступу зовнішніх класів до атрибутів і методів даного класу та їх зміні. Іншими словами, це “приховування даних”.

В Python приватні (private) атрибути позначаються за допомогою одинарного _ або подвійного __ підкреслень розміщених на місці префіксу. Наприклад:

Результат:

Selling Price: 900
Selling Price: 900
Selling Price: 1000

Тут ми визначили клас Computer і використали метод __init__() для збереження ціни комп’ютера. Зверніть увагу на наступний рядок коду:

Тут ми спробували змінити значення __maxprice поза класом. Однак, оскільки __maxprice є приватною змінною, у нас нічого не вийшло. Для зміни ціни необхідно використовувати функцію-сеттер, тобто setMaxPrice(), яка приймає ціну як параметр.

Поліморфізм в Python

Поліморфізм означає наявність більш як однієї форми, тобто одна і та ж сутність (метод, оператор чи об’єкт) може виконувати різні дії у різних ситуаціях. Наприклад:

Результат:

Rendering Square...
Rendering Circle...

Тут ми створили батьківський клас Polygon та два дочірні класи: Square і Circle. Зверніть увагу на використання методу render(), основною метою якого є малювання (рендеринг) фігури. Проте процес рендерингу квадрата (Square) відрізняється від процесу рендерингу кола (Circle). Метод render() поводиться по-різному в різних класах. Можна сказати, що метод render() є поліморфним.

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (29 оцінок, середня: 4,83 з 5)
Завантаження...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *