170 похожих чатов

Есть какая-то разница\предпочтение в использование zope.interface или ABC в реализации

интерфейса?

С ABC вроде как образуется абстрактный класс, но он в динамическом языке может выполнять функции интерфейса

p.s еще увидел реализацию через typing.Protocol, тут я вообще не понял(

Protocols are defined by including a special new class typing.Protocol (an instance of abc.ABCMeta)
и в чем разница, если использовать сразу metaclass=abc.ABCMeta

6 ответов

8 просмотров

Надо начать с определения интерфейса. Дальше будет понятнее

GHdeewre- Автор вопроса
Tishka17
Надо начать с определения интерфейса. Дальше будет...

Как мне лучше реализовать инверсию зависимостей(DI)? С использованием zope.interface, abcmeta или protocol Интерфейс служит для дополнительного уровня абстракций \ оболочкой взаимодействия разных классов. Абстрактный класс полностью заменяет собой интерфейс, вроде как в языках без множественного наследования нельзя наследовать больше одного класса(абстрактного), но Пайтон к таким не относится. В Пайтоне из-за утиной типизации надобности технической нет, но это ухудшает разборчивость кода. Легче понять функцию\метод который принимает экземпляр класса с предопределенными методами (интерфейс)

GHdeewre
Как мне лучше реализовать инверсию зависимостей(DI...

Абстрактный класс не заменяет собой интерфейс, так как от него надо наследоваться

не заменяет, но что мешает его так использовать? особенно на более старых версиях питона

Kirill Leontev
не заменяет, но что мешает его так использовать? о...

Банда четырех однозначно разделяет интерфейсы и типы. Первое - описывает набор доступных методов у объекта, второе - как он был создан. Совместимость с интерфейсом не требует явной декларации этого, она просто есть. Именно так работают протоколы. Во втором питоне было принято протоколы описывать словами в документации

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
Всем привет, после Си стоит учить плюсы или лучше на раст перейти?
Linus
8
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
или вы считаете муит дает знание?
супер_лох_3000 альфа версия
12
значить например он учился в СДУ то получается он особенный?)
Asets Serikov
11
Карта сайта