Как правильно распределить методы класса в модули? И так, есть проект. Грубо говоря, 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
287 +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 Апр 2024 в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир