Статический класс или функции Python в модулях

Мне нужно кое-что для организации некоторых служебных функций.
Вариант 1. создать модуль и написать все функции в этом модуле.
Вариант 2. (поскольку в питоне нет staticclass) создать класс только со статическими методами в основном модуле

В общем, большой разницы нет. Вроде:

вариант 1)

import functionsmodule
workers = functionmodule.get_all_workers(**kwargs)

вариант 2)

workers = FunctionClass.get_all_workers(**kwargs)

Хотя второй мне нравится. Вопрос: как лучше организовать такую ​​организацию?


person KotGaf    schedule 08.06.2016    source источник
comment
По какой причине почему вам нравится второй?   -  person miradulo    schedule 08.06.2016
comment
Нет лучшего способа организовать такую ​​организацию, все зависит от того, чего вы хотите достичь. Однако в целом первый подход больше подходит для разрозненных функций с небольшой взаимосвязью, тогда как класс зарезервирован для случаев, когда методы взаимосвязаны и используют друг друга.   -  person j4hangir    schedule 08.06.2016


Ответы (1)


Вы также можете сделать:

from functionsmodule import get_all_workers, some_other_method

workers = get_all_workers(**kwargs)

После пары месяцев изучения Python это мое предпочтительное решение. Он очищает код без необходимости ссылаться на класс или модуль. Я бы рекомендовал это только в том случае, если имена методов ваших утилит НЕ конфликтуют со встроенными или другими функциями.

Обычно я организую эти повторно используемые/утилиты в общем пакете и реализую что-то вроде:

from common.functions import get_all_workers, some_other_method

workers = get_all_workers(**kwargs)

РЕДАКТИРОВАТЬ: на основе вашего имени метода "get_all_workers" - я полагаю, что это должно войти в какой-то класс персистентности/рабочего, а не в общий класс утилит

person AK47    schedule 08.06.2016