Una docstring python se debe dar como una cadena literal; pero a veces es útil tener docstrings similares para varias funciones (por ejemplo, diferentes constructores), o varios métodos de acceso podrían aceptar la misma lista de argumentos (y luego confiar en el mismo método oculto), por lo que sería bueno usar el mismo descripción en todas partes. Para tales casos, puedo construir una docstring asignándola al __doc__
, lo cual hago por medio de un simple decorador. El sistema funciona muy bien (en python 2), y estoy satisfecho con lo simple, claro y bien encapsulado que es.Modificar un docstring python con un decorador: ¿Es una buena idea?
La pregunta: ¿Es esta una buena idea? En particular, hay herramientas que se confundirían con esta configuración (por ejemplo, cualquier cosa que extraiga las cadenas de documentos de la fuente en lugar de hacerlo desde el bytecode). ¿La solución seguirá funcionando en Python 3? ¿Hay otros motivos o circunstancias que lo hagan desaconsejable?
"diferentes constructores"? Supongo que te refieres a algún tipo de funciones de fábrica, porque solo puedes tener un '__init__'. –
No creo que la "función de fábrica" sea correcta. Me refería a los miembros estáticos de una clase, que crean una instancia de la misma clase. Todos serían constructores polimórficos en un lenguaje que lo respalde directamente. Pero sí, las funciones de fábrica pueden ser otro caso de uso. – alexis
Los consideraría una especie de fábrica, sí. No existe realmente ninguna diferencia entre las funciones miembro estáticas y las funciones gratuitas (para usar la terminología C++), además del espacio de nombres. Aunque Python tiene conceptos separados de "método de clase" y "método estático". –