Как правильно распределить методы класса в модули? И так, есть проект. Грубо говоря, 4 py-файла. 2 файла статичных настроек, и 2 файла с классами внутри. Запускается один файл, в котором создаётся несколько экземпляров класса из второго файла, и первый далее с ними многопроцессорно работает: На основе каких-то присланных данных берёт какую-то функцию из второго класса и выполняет её с нужными аргументами.
Есть идея разделить второй класс (~220 кб) на модули из-за избыточности методов в нём и отсутствии логики внутри класса как таковой.
В классе содержатся методы, которые можно разделить на несколько типов
1.1 Методы класса, которые можно сделать статичными и вынести из класса без проблем.
1.2 Методы класса, использующие методы из пункта 1.1
1.3 Методы класса, использующие методы из пункта 1.1 или 1.2 + использующие аргументы класса.
Как я вижу решение:
Разделить класс на два модуля, commands и tools. В tools пойдут все методы из пункта 1.1 и другие побочные методы, а в commands именно функции, которые выполняет программа.
НО!
Что, в таком случае, делать с функциями использующими аргументы класса?
Как, кроме sys.path, можно связать каталоги commands и tools, ведь модули в tools не видны из commands?(решается помещением tools внутрь commands, либо созданием tools.py с набором функций, но оба варианта кажутся неверными - вдруг понадобится из первого класса вызывать, прописывать from commands.tools.db import db выглядит как-то стрёмно, как и from commands.tools import db)

21 Авг 2019 в 06:21
253 +1
0
Ответы
1

В данной ситуации, вам может помочь структурировать проект следующим образом:

Создайте пакет (директорию) под названием commands и поместите в него файлы с классами и функциями, отвечающими за операции и команды программы.

Создайте пакет (директорию) под названием tools и поместите в него файлы с функциями, которые не привязаны к конкретным экземплярам классов, и могут быть использованы в различных частях вашего проекта.

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

В файле commands импортируйте необходимые функции из пакета tools для использования в ваших классах и функциях.

Примерно так будет выглядеть структура вашего проекта:

project_directory/

├── main_file.py
├── settings_file1.py
├── settings_file2.py

├── commands/
│ ├── __init__.py
│ ├── operations_file.py
│ └── other_commands.py

└── tools/
├── __init__.py
├── helper_functions.py
└── additional_functions.py

В файле operations_file.py, например, вы можете импортировать функции из tools следующим образом:

from tools.helper_functions import some_helper_function

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

20 Апр в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 718 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир