Абстракция данных — это принцип, при котором ты выставляешь напоказ только существенные характеристики объекта, скрывая детали его внутренней реализации. Это упрощает взаимодействие других частей программы с твоим кодом.
Python предоставляет абстракцию в основном через модуль abc (Abstract Base Classes).
Ключевые инструменты включают:
ABC — базовый класс, от которого наследуется твой абстрактный класс@abstractmethod — декоратор, который заставляет подклассы реализовать определённые методыfrom abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self) -> float:
pass
class Circle(Shape):
def __init__(self, radius: float):
self.radius = radius
def area(self) -> float:
return 3.14 * self.radius ** 2
Здесь Shape определяет, что должна делать фигура, но не указывает, как это делать. Любой подкласс, который пропустит реализацию area, вызовет TypeError при попытке создания экземпляра.
Python также поддерживает абстракцию через:
_ или __ перед атрибутами сигнализируют, что они внутренние@property для контролируемого доступа к приватным даннымtyping) — определяют структурные интерфейсы без явного наследования, полезны для duck typingВ Python попытка создать экземпляр подкласса, который не реализует ни один абстрактный метод, декорированный @abstractmethod, вызовет TypeError во время создания экземпляра.
Новый — ещё не проверен сообществом
Вы