En mi código, cualquiera de las dos opciones anteriores funcionaría igual de bien, pero estoy interesado en conocer las ventajas y desventajas de ambos enfoques.
Honestamente depende de tus necesidades. La mayoría de las veces un módulo de funciones será lo que estás buscando.
Las clases de Python (imho) no deberían pensarse como clases en C # o C ++ o Java, debe haber una razón lógica para agrupar un conjunto de funciones en un padre mayor, las estructuras de datos serían un buen ejemplo de esto. un conjunto congruente de funciones que se aplican directamente a la clase en lugar de un conjunto de funciones libremente recopiladas que tienen un propósito general.
Un módulo es para la agrupación jerárquica general de sistemas similares, generalmente tengo todas las funciones de utilidad en un solo módulo, todos los datos en otro, mi capa de datos y conectores en un módulo de tipo más "padre". Dado que un módulo es solo una agrupación mental, se trata menos de qué tipos de sistemas hay en él (clases o funciones, honestamente probablemente una combinación de los dos) y más sobre las conexiones lógicas entre los sistemas bajo el módulo.
La pregunta básica es si necesita tener diferentes instancias de su módulo / clase. un módulo de python es como un singleton : siempre se refiere al mismo objeto, es decir, si necesita instancias, necesita una clase.
Sin embargo, si no necesita instancias, es posible que tenga la necesidad de configurar su "objeto" en un estado inicial. Si bien esto es claramente posible con un módulo simple, si la inicialización es más compleja que solo establecer algunos valores, recomendaría tener un código de inicialización en el
__init__
método de una clase para facilitar la lectura.fuente