Найти в Дзене

[Python] Пишем простую программу на python

Эта статья является продолжением статьи Создаем базовую архитектуру проекта на python и входит в цикл статей Пишем свою библиотеку с нуля и публикуем её в PyPI (GitVerse) В этой статье я не буду детально описывать, как писать программу на Python, но покажу, из каких обязательных компонентов должна состоять ВАША программа и зачем каждый из них нужен. Файлы проекта можно взять из git по ссылке ОС: Windows 10 Язык: Python 3.14 Файл __init__.py — основной компонент программы. Этим файлом мы убираем всю лишнюю шелуху и оставляем только ключевые классы и функции. from .core import Credit, Payment, PaymentSchedule, ScheduleStats
__all__ = ['Credit', 'Payment', 'PaymentSchedule', 'ScheduleStats'] Пользователь видит 4 класса, а не 10 модулей. Файл необязательный. Но создавать __main__.py надо, если разработчик хочет, чтоб программа работала не только как библиотека, но и из консоли: python -m bnkc -c "1000000:12.5:60" Я в предыдущей статье ссылался на документацию, где объясняется, зачем эти ф
Оглавление

Введение

Эта статья является продолжением статьи Создаем базовую архитектуру проекта на python и входит в цикл статей Пишем свою библиотеку с нуля и публикуем её в PyPI (GitVerse)

В этой статье я не буду детально описывать, как писать программу на Python, но покажу, из каких обязательных компонентов должна состоять ВАША программа и зачем каждый из них нужен.

Файлы проекта можно взять из git по ссылке

Используемые технологии

ОС: Windows 10

Язык: Python 3.14

Структура программы

-2

Фасад: bnkc/__init__.py

Файл __init__.py — основной компонент программы. Этим файлом мы убираем всю лишнюю шелуху и оставляем только ключевые классы и функции.

from .core import Credit, Payment, PaymentSchedule, ScheduleStats
__all__ = ['Credit', 'Payment', 'PaymentSchedule', 'ScheduleStats']

Пользователь видит 4 класса, а не 10 модулей.

CLI интерфейс: bnkc/__main__.py

Файл необязательный. Но создавать __main__.py надо, если разработчик хочет, чтоб программа работала не только как библиотека, но и из консоли:

python -m bnkc -c "1000000:12.5:60"
-3

Пакеты: bnkc/core/__init__.py и bnkc/utils/__init__.py

Я в предыдущей статье ссылался на документацию, где объясняется, зачем эти файлы нужны. Если кратко: файлы группируют модули в пакеты, а с пакетами удобнее работать.

Бизнес-слой: core/

Здесь живёт основная бизнес-логика.

Ключевые особенности:

credit.py — главный класс-оркестратор

  • Один файл — один класс
  • Фабричный метод from_string()
  • Публичный API

payment.py — модель данных

  • Отдельный модуль для Класса данных
  • Настройка отображения данных через магический метод __str__

schedule.py — визуализация

  • Пример, когда модель данных в одном модуле с основным классом
  • Через метод __getitem__ реализована итерация по списку Payment

Вспомогательный слой: utils/

Все не относящиеся к бизнес-логике вещи можно и нужно выносить в отдельные модули.

Ключевые особенности:

converters.py — адаптер

  • Единая точка для обработки входных данных
  • Консистентность типов по всей программе

validators.py — валидность ввода

  • Защищаем бизнес-логику от мусора на входе

settings.py — настройки

  • Все настройки в одном месте — легко менять без поиска по всему коду

Важно!!!

Ваша библиотека — это не просто набор функций. Это продукт со своей архитектурой, интерфейсами и пользователями. Инвестируйте время в структуру на старте — сэкономите нервы при масштабировании.

Сохраняем проект в репозитории

Отправляем данные в удаленный репозиторий

git add .
git commit -m "добавляем программу в проект"
git push -u origin dev

В следующей статье мы настроим инструменты контроля качества и найдём все ошибки, которые были оставлены здесь специально.

Исходники проекта

- 16fbf9a684c8e421ebd98242c94e77409a3d6b0f - pytechnotes/bnkc - Gitverse

Подписывайтесь на Дзен, а также приглашаю в мой телеграмм канал, там публикую другой, но не менее интересный контент.