Как использовать интерфейс в 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 - это класс, который определяет методы, которые могут быть переопределены, но нет строгого обязательства.
InformalParserInterface
определяет два метода .load_data_source()
и .extract_text()
. Эти методы могут быть переопределены в классах, которые реализуют данный интерфейс.