Как правильно распределить методы класса в модули? И так, есть проект. Грубо говоря, 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)
В данной ситуации, вам может помочь структурировать проект следующим образом:
Создайте пакет (директорию) под названием commands и поместите в него файлы с классами и функциями, отвечающими за операции и команды программы.
Создайте пакет (директорию) под названием tools и поместите в него файлы с функциями, которые не привязаны к конкретным экземплярам классов, и могут быть использованы в различных частях вашего проекта.
Внутри каждого из этих пакетов, создайте файл __init__.py чтобы Python понимал, что эти директории являются пакетами.
В файле commands импортируйте необходимые функции из пакета tools для использования в ваших классах и функциях.
Примерно так будет выглядеть структура вашего проекта:
В файле operations_file.py, например, вы можете импортировать функции из tools следующим образом:
from tools.helper_functions import some_helper_function
Таким образом, вы сможете логически структурировать ваш проект, разделив методы классов на отдельные модули и импортировав нужные функции там, где они необходимы. В случае необходимости применения этих функций в других частях проекта, вам также будет удобно проводить импорт.
В данной ситуации, вам может помочь структурировать проект следующим образом:
Создайте пакет (директорию) под названием 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Таким образом, вы сможете логически структурировать ваш проект, разделив методы классов на отдельные модули и импортировав нужные функции там, где они необходимы. В случае необходимости применения этих функций в других частях проекта, вам также будет удобно проводить импорт.