Python: Абстракция с помощью данных
2026-02-26 20:17 Diff

В IT широко распространен термин «интерфейс». Мы часто используем это слово в повседневной жизни. Например, пользовательский интерфейс — это совокупность элементов управления сайтом, банкоматом, телефоном. Интерфейсом пульта управления от телевизора являются кнопки. Интерфейсом автомобиля — все рычаги управления, кнопки и руль.

Интерфейс определяет способ взаимодействия с системой. Чем сложнее система — больше возможных состояний — тем сложнее сделать интерфейс. Даже в примере с кнопкой включения телевизора, у которой два состояния — включение и выключение, можно реализовать как минимум два варианта. Например, сделать либо две кнопки, либо одну, которая ведет себя по-разному в зависимости от текущего состояния.

В программировании все устроено похожим образом.

Интерфейсом в программировании называют набор функций: возвращаемое значение, имена и их сигнатуры — количество и типы входящих параметров. Они не зависят от конкретной реализации. Такое определение совпадает с понятием абстрактного типа данных. Например, для точек интерфейсными являются все функции, которые мы реализовывали в практике и описывали в теории.

Абстракция — это слово, описывающее те данные, с которыми мы работаем. Например, почти каждое веб-приложение включает в себя абстракцию «пользователь». На Хекслете есть абстракции «курс» и «проект». А интерфейсом называется набор функций, с помощью которых можно взаимодействовать с данными.

Но функции бывают не только интерфейсные, но и вспомогательные. Они не предназначены для вызывающего кода и используются только внутри абстракции:

В сложных абстракциях, которые представляются внешними библиотеками, количество неинтерфейсных функций значительно больше, чем интерфейсных. Например, интерфейсом библиотеки могут являться одна или две функции, но в самой библиотеке их будут сотни. То, насколько хороша абстракция, определяется и тем, насколько удобен ее интерфейс.