Dans mon code, l'une des deux options ci-dessus fonctionnerait tout aussi bien, mais je suis intéressé à découvrir les avantages et les inconvénients des deux approches.
Cela dépend honnêtement de vos besoins. La plupart du temps, un module de fonctions sera ce que vous recherchez.
Les classes Python (imho) ne doivent pas être considérées comme des classes en C # ou C ++ ou Java, il doit y avoir une raison logique de regrouper un ensemble de fonctions dans un parent plus grand, les structures de données en seraient un bon exemple, vous voulez un ensemble congru de fonctions qui s'appliquent directement à la classe au lieu d'un ensemble de fonctions vaguement collectées à usage général.
Un module est pour le regroupement hiérarchique global de systèmes similaires, j'ai généralement toutes les fonctions utilitaires sous un seul module, toutes les données sous un autre, ma couche de données et les connecteurs sous un module de type plus "parent". Puisqu'un module n'est qu'un regroupement mental, il s'agit moins des types de systèmes qu'il contient (classes ou fonctions, honnêtement probablement un mélange des deux) et plus des connexions logiques entre les systèmes sous le module.
La question de base est de savoir si vous avez besoin d'avoir différentes instances de votre module / classe. un module python est comme un singleton - vous faites toujours référence au même objet, c'est-à-dire que si vous avez besoin d'instances, vous avez besoin d'une classe.
Cependant, si vous n'avez pas besoin d'instances, vous devrez peut-être encore configurer votre "objet" à un état initial. Bien que cela soit clairement possible avec un module simple, si l'initialisation est plus complexe que la simple définition de certaines valeurs, je conseillerais d'avoir un code d'initialisation dans la
__init__
méthode de lisibilité d' une classe .la source