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 ответов

25 просмотров

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

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

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

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

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

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

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта