Реальный Python
3.69K subscribers
828 photos
10 videos
7 files
877 links
Все о пайтон, новости, подборки на русском и английском. По всем вопросам @evgenycarter
Download Telegram
🐍 Как работают интерфейсы в Python и зачем они нужны?

В Python нет специального ключевого слова interface (как, например, в Java или C#), но это не значит, что мы не можем создавать надежные контракты для наших классов!

Свежая и очень подробная статья от *Real Python* разбирает, как правильно реализовывать интерфейсы в Python. Вот два основных механизма:

🔹 Абстрактные базовые классы (ABCs)
Используем модуль abc и декоратор @abstractmethod. Это строгий подход на основе наследования: если ваш дочерний класс не реализует все необходимые методы, Python выдаст ошибку TypeError еще на этапе создания объекта (instantiation), а не тогда, когда код упадет во время выполнения.

🔹 Протоколы (Protocols)
Современный подход структурной типизации с помощью typing.Protocol. Вашим классам вообще не нужно наследовать протокол — достаточно просто иметь нужные методы с правильными сигнатурами. Это идеально подходит для проверки статическими анализаторами кода (например, `mypy`).

🦆 Duck Typing (Утиная типизация)
Куда же без нее! Python по своей природе динамичен: "если объект ходит как утка и крякает как утка, то это утка". ABC и Протоколы просто берут эту концепцию и делают ее безопаснее, позволяя использовать isinstance() и issubclass() для проверки контрактов.

Понимание интерфейсов помогает применять принципы объектно-ориентированного дизайна (SOLID) и писать код, который работает с различными типами данных без жесткой привязки к их конкретным реализациям.

https://realpython.com/python-interface/

#python

👉 @python_real
👍1
UV

Чрезвычайно быстрый менеджер пакетов и проектов на языке Python, написанный на Rust.

Создатели позиционируют его как замену pip, pip-tools и virtualenv. Это, кстати, те же разработчики, которые сделали линтер Ruff.

https://astral.sh/blog/uv

https://github.com/astral-sh/uv

#python

👉 @python_real
👍2😁1
Реализация парсеров с Pylasu

В этой статье рассказывается, как реализовать парсеры на Python с использованием Pylasu и ANTLR. Пошагово:

1. Создадим грамматику ANTLR для простого языка программирования Slang и сгенерируем парсер.
2. Определим абстрактное синтаксическое дерево (AST) с помощью Pylasu и научимся строить его из дерева разбора ANTLR.
3. Интегрируем парсер с CLI-приложением для обработки кода Slang из строк и файлов, с выводом AST в формате JSON.

Полный код проекта доступен на GitHub. Вы можете экспериментировать, вносить улучшения и делиться идеями!

https://tomassetti.me/implement-parsers-with-pylasu/

#python

👉 @python_real
👍2