Большинство проектов не ограничиваются одним лишь файлом main.py, напротив, часто проекты состоят из множества файлов с кодом конкретной логики. Для этого в Python предусмотрена "пакетная" система. Пакет является директорией, которая содержит в себе модули и подпакеты. Он позволяет логически объединять связанный функционал и предоставляет простой способ управления зависимостями и кодом в рамках проекта.
Python Package.
Если, вы работаете в PyCharm или другой Python-направленной IDE, то достаточно в контекстном меню директории выбрать "New - Python Package".

Но создать пакет можно и вручную.
Для этого необходимо создать директорию с необходимым именем пакета. Внутри директории создать пустой файл __init.py__. Данный файл сообщит интерпретатору, что директория является пакетом.

Пакет botlogic.
Создадим основной пакет botlogic со всей будущей логикой.
В этом пакете создадим файл settings.py.

В этом файле будут располагаться, при необходимости, настройки бота. Пока, что мы перенесём в него токен бота и добавим ID администратора.
Тут, для удобства применим ООП.
Те, кто уже успели испугаться, расслабьтесь, в создании бота ООП либо крайне мало, либо нет вовсе. Тут я применяю его банально для удобства.
Датакласс Secrets.
Создадим класс датакласс Secrets и в нём два поля token и admin_id:
from dataclasses import dataclass
@dataclass
class Secrets:
token: str = 'ваш_токен'
admin_id: int = 12345
Разберём, что тут происходит.
Мы создали класс Secrets и определили два поля:
- Строковое
tokenв котором указываем полученный отBotFatherтокен бота. - Целочисленное
admin_idв котором необходимо указать ваш Telegram-ID, но это будет несколькими постами далее, пока просто заполните любым числом.
Далее должно было быть несколько методов, таких как __init__ и геттеры полей, но нам тут всё это не нужно. Для избегания большого количества ненужного кода, мы используем декоратор @dataclass.
Декоратор @dataclass - позволяет автоматически сгенерировать методы класса для работы с данными.
Когда применяется декоратор @dataclass к классу, он автоматически добавляет реализацию необходимых методов, таких как:
__init__: Создает конструктор класса, принимающий значения для каждого атрибута.__repr__: Создает строковое представление объекта, которое используется при вызовеrepr().
И ряда других.
Кроме того, декоратор@dataclassпозволяет использовать аннотации типов для объявления типов полей класса, что упрощает чтение кода.
Продолжение в следующем посте.
Комментарии
Оставить комментарийВойдите, чтобы оставить комментарий.
Комментариев пока нет.