Обложка канала

Типа про IT

1563 @tipaproit

Типа про IT и вот это вот всё — full stack development и современные инструменты, подборки и рекомендации, интересные находки и практические советы. Профессиональный авторский контент.

Типа про IT

4 года назад
Открыть в
В Python 3.8, то есть года три назад, завезли так называемый structural subtyping (aka Protocols), он же PEP 544 авторства Івана Левицького (Dropbox). Сделано это в противовес nominal subtyping, который, в свою очередь, в мире Python тоже вещь относительно новая, но к который уже успели немного привыкнуть и даже стали друг от друга требовать. До недавних пор я не встречал протоколы в дикой природе, в каком-нибудь реальном проекте, чтобы попробовать, ну и сравнить с более привычным и потому понятным ABC. А теперь у нас что ни класс, то протокол или следование протоколу :) ABCs are run-time checks, Protocols provide static-checking. When to use which one? Даёт ли это какие-либо преимущества? В целом да, особенно когда команда угорает по DDD. Можно обвешаться хинтами и перенести часть ответственности за валидность имплементации на mypy, заодно отлавливать глупости ещё на этапе билдов в CI/CD. Можно более смело проворачивать подмену имплементации. Можно чуть больше думать о сущностях, композиции и высоких материях. Но каких-то специальных инструментов сверху, помимо непосредственно тайп-чекинга пока, вроде, не появилось. Самому языку всё ещё безразлично что вы там придумаете, но всё идёт к тому, что Python при нашей жизни станет (опционально) строго типизированным языком по-умолчанию. Также занятно, что FastAPI культивировал доселе чуждый нашей больничке Inversion of Control и мы научились любить Dependency Injection как родного. Protocols, DI, фабрики… ожидали ли вы лет 10 назад, что с питоном случится такое?