Esto no se trata de @staticmethod
y @classmethod
! Se como staticmethod
funciona. Lo que quiero saber es los casos de uso adecuados para @staticmethod
una función a nivel de módulo.
Busqué en Google esta pregunta, y parece que hay un acuerdo general de que las funciones de nivel de módulo son preferibles a los métodos estáticos porque es más pitónico. Los métodos estáticos tienen la ventaja de estar vinculados a su clase, lo que puede tener sentido si solo esa clase lo usa. Sin embargo, en Python la funcionalidad generalmente está organizada por módulo, no por clase, por lo que también tiene sentido hacerlo una función de módulo.
Los métodos estáticos también pueden ser anulados por subclases, lo cual es una ventaja o desventaja dependiendo de cómo se mire. Sin embargo, los métodos estáticos suelen ser "funcionalmente puros", por lo que, en general, puede no ser inteligente, pero a veces puede ser conveniente (aunque este puede ser uno de esos "convenientes, pero NUNCA LO HAGA" cosas que solo la experiencia puede enseñarle).
¿Existe alguna regla general para usar el método estático o las funciones a nivel de módulo? ¿Qué ventajas o desventajas concretas tienen (por ejemplo, extensión futura, extensión externa, legibilidad)? Si es posible, también proporcione un ejemplo de caso.