Абстракция — это процесс выделения наиболее значимых характеристик объекта, игнорируя менее значимые детали. В контексте ООП абстракция позволяет сосредоточиться на том, что делает объект, а не на том, как он это делает. В Python абстракция часто реализуется с помощью абстрактных классов и методов.
Зачем нужна абстракция?
- Упрощение разработки сложных систем.
- Повышение уровня повторного использования кода.
- Создание общих интерфейсов для работы с различными реализациями.
Абстрактные классы и методы в Python
Для создания абстрактных классов и методов в Python используется модуль abc (Abstract Base Classes). Абстрактные методы — это методы, которые объявлены, но не имеют реализации. Они предназначены для того, чтобы их реализовывали в дочерних классах.
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
rect = Rectangle(5, 10)
print(rect.area()) # 50
В этом примере класс Shape является абстрактным, поскольку содержит абстрактный метод area. Класс Rectangle наследует от Shape и реализует метод area.
Интерфейсы
Хотя в Python нет явной поддержки интерфейсов, как в некоторых других языках, вы можете имитировать их с помощью абстрактных классов. Интерфейс — это контракт, который определяет набор методов, которые должны быть реализованы в классах, использующих данный интерфейс.
from abc import ABC, abstractmethod
class Drawable(ABC):
@abstractmethod
def draw(self):
pass
class Circle(Drawable):
def __init__(self, radius):
self.radius = radius
def draw(self):
print(f"Круг радиусом {self.radius}")
circle = Circle(5)
circle.draw() # Круг радиусом 5
В этом примере класс Drawable играет роль интерфейса, требуя от всех своих наследников реализовать метод draw.
Источник: https://stepik.org/lesson/1584617/step/1?unit=1605974
Было ли это полезно?
0 / 0