Estoy tratando de hacer algo de herencia de clases en Python. Me gustaría que cada clase y clase heredada tenga buenas cadenas de documentación. Así que creo que para la clase heredada, me gustaría:
- heredar la clase base docstring
- tal vez agregar documentación adicional relevante a la cadena de documentos
¿Hay alguna forma (posiblemente elegante o pitónica) de hacer este tipo de manipulación de cadenas de documentos en una situación de herencia de clases? ¿Qué tal la herencia múltiple?
python
inheritance
documentation
Craig McQueen
fuente
fuente
inspect.getdoc
buscará en el árbol de herencia hasta que encuentre una cadena de documentos.Respuestas:
¡No eres el único! Hubo una discusión
comp.lang.python
sobre esto hace un tiempo y se creó una receta. Compruébalo aquí .fuente
Puede concatenar las cadenas de documentos fácilmente:
Sin embargo, eso es inútil. La mayoría de las herramientas de generación de documentación ( incluidas Sphinx y Epydoc ) ya extraerán la cadena de documentos principal, incluidos los métodos. Entonces no tienes que hacer nada.
fuente
No particularmente elegante, pero simple y directo:
Ahora:
fuente
Init docstring
, ¿hay alguna manera de hacerlo en la definición deY
? La única forma en que he podido hacerlo es usando__init__.__doc__ = X.__init__.__doc__ + " Also another param"
la__init__
definición siguiente,Y
pero esto parece interferir con el formato, lo que genera espacios adicionales.Un estilo mixto que puede preservar tanto la sintaxis de la cadena de documentos heredada como el orden preferido puede ser:
Con el mismo resultado que el de Alex:
Hielo fino: jugar con docstring puede inutilizar su módulo con
python -OO
, espere algo:fuente
Escribí custom_inherit para proporcionar algunas herramientas simples y ligeras para manejar la herencia de cadenas de documentos.
También viene con algunos estilos predeterminados agradables para fusionar diferentes tipos de cadenas de documentos (por ejemplo, cadenas de documentos con formato Numpy, Google y reST). También puede proporcionar su propio estilo con mucha facilidad.
Las secciones de cadenas de documentos superpuestas se transferirán a la sección del niño, de lo contrario, se fusionarán con un formato agradable.
fuente