Що таке abstract в Python?
Абстрактні базові класи (Abstract Base Classes, ABC) у Python використовуються для визначення інтерфейсів, які мають реалізовуватися в дочірніх класах. Модуль abc надає інструменти для створення таких класів, а також для перевірки відповідності класів певним інтерфейсам. Це корисно для створення строгих правил проєктування та підвищення читабельності коду.
Клас, який успадковує ABC, не може бути ініціалізований, якщо не реалізовані всі його абстрактні методи. Це гарантує, що всі дочірні класи відповідатимуть заданій структурі.
- Дозволяють створювати шаблони класів для наслідування.
- Гарантують, що дочірні класи реалізують усі необхідні методи.
- Спрощують підтримку та масштабування великих проєктів.
from abc import ABC, abstractmethod
class Shape(ABC):
# Абстрактний метод повинен бути реалізований у дочірньому класі
@abstractmethod
def area(self):
pass
@abstractmethod
def perimeter(self):
pass
# Реалізація конкретного класу
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
def perimeter(self):
return 2 * (self.width + self.height)
# Спроба створити об'єкт абстрактного класу викличе помилку
# shape = Shape() # TypeError
rectangle = Rectangle(4, 5)
print("Площа:", rectangle.area())
print("Периметр:", rectangle.perimeter())
У наведеному прикладі клас Shape є абстрактним базовим класом, який визначає два обов'язкових методи: area та perimeter. Клас Rectangle реалізує ці методи, завдяки чому може бути успішно ініціалізований. Якщо спробувати створити об'єкт Shape, Python видасть помилку.
Використання ABC підходить для створення складних архітектур, де необхідно задавати чіткі правила поведінки для дочірніх класів. Це робить код більш надійним та зрозумілим, особливо у великих проєктах з командною розробкою.