Пропустить до содержимого

Как использовать интерфейс в Python?

[

Реализация интерфейса в Python

Автор: William Murphy advanced python

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

В этом руководстве вы сможете:

  • Понять, как работают интерфейсы и особенности создания интерфейсов в Python.
  • Понять, насколько полезны интерфейсы в динамическом языке, таком как Python.
  • Реализовать неформальный интерфейс Python.
  • Использовать abc.ABCMeta и @abc.abstractmethod для реализации формального интерфейса Python.

Интерфейсы в Python обрабатываются иначе, чем в большинстве других языков, и могут иметь различную сложность в дизайне. По окончанию этого руководства вы получите лучшее понимание некоторых аспектов модели данных Python, а также сможете сравнить интерфейсы в Python с интерфейсами в языках, таких как Java, C++ и Go.

Пройти тест: Проверьте свои знания с нашей интерактивной викториной “Реализация интерфейса в Python”. По окончанию вы получите оценку, чтобы отслеживать свой прогресс в обучении:

Пройти тест »

Обзор интерфейса Python

На высоком уровне интерфейс действует как чертеж для проектирования классов. Как и классы, интерфейсы определяют методы. В отличие от классов, эти методы являются абстрактными. Абстрактный метод - это метод, который интерфейс просто определяет. Он не реализует методы. Это делают классы, которые затем реализуют интерфейс и придают конкретный смысл абстрактным методам интерфейса.

Неформальные интерфейсы

В некоторых случаях вам может не понадобиться строгое правило формального интерфейса Python. Динамическая природа Python позволяет вам реализовать неформальный интерфейс. Неформальный интерфейс Python - это класс, который определяет методы, которые могут быть переопределены, но нет строгого обязательства.

class InformalParserInterface:
def load_data_source(self, path: str, file_name: str) -> str:
"""Load in the file for extracting text."""
pass
def extract_text(self, full_file_name: str) -> dict:
"""Extract text from the currently loaded file."""
pass

InformalParserInterface определяет два метода .load_data_source() и .extract_text(). Эти методы могут быть переопределены в классах, которые реализуют данный интерфейс.