Відповіді:
Це чесно залежить від ваших потреб. Більшу частину часу модуль функцій буде тим, що ви шукаєте.
Класи Python (imho) не слід думати як класи на C # або C ++ або Java, для того, щоб згрупувати набір функцій у більшу батьківську структуру, повинна бути логічна причина, структури даних є хорошим прикладом цього. конгруентний набір функцій, які застосовуються безпосередньо до класу замість слабо зібраного набору функцій, що мають загальне призначення.
Модуль призначений для загальної ієрархічної групування подібних систем, у мене зазвичай є всі функції утиліти під одним модулем, всі дані під іншим, мій рівень даних та роз'єми під більш "батьківським" модулем типу. Оскільки модуль є лише ментальним угрупованням, то менше про те, які типи систем є в ньому (класи чи функції, якщо чесно, мабуть, це поєднання двох) та більше про логічні зв’язки між системами під модулем.
Основне питання - чи потрібно мати різні екземпляри вашого модуля / класу. модуль python - це як синглтон - ви посилаєтесь завжди на один і той же об'єкт, тобто якщо вам потрібні екземпляри, вам потрібен клас.
Однак, якщо вам не потрібні екземпляри, у вас все ще може виникнути потреба встановити свій "об'єкт" на початковий стан. хоча це очевидно можливо за допомогою простого модуля, якщо ініціалізація є більш складною, ніж просто встановлення деяких значень, я б радив мати код ініціалізації в __init__
методі класу для читабельності.