J'essaie de faire un héritage de classe en Python. J'aimerais que chaque classe et classe héritée aient de bonnes docstrings. Donc je pense que pour la classe héritée, j'aimerais qu'elle:
- hérite de la classe de base docstring
- peut-être ajouter la documentation supplémentaire pertinente à la docstring
Existe-t-il un moyen (éventuellement élégant ou pythonique) de faire ce genre de manipulation de docstring dans une situation d'héritage de classe? Que diriez-vous de l'héritage multiple?
python
inheritance
documentation
Craig McQueen
la source
la source
inspect.getdoc
je rechercherai l'arbre d'héritage jusqu'à ce qu'il trouve une docstring.Réponses:
Tu n'es pas le seul! Il y a eu une discussion à
comp.lang.python
ce sujet il y a quelque temps, et une recette a été créée. Découvrez-le ici .la source
Vous pouvez concaténer les docstrings facilement:
Cependant, cela ne sert à rien. La plupart des outils de génération de documentation ( Sphinx et Epydoc inclus) extrait déjà la docstring parent, y compris pour les méthodes. Vous n'avez donc rien à faire.
la source
Pas particulièrement élégant, mais simple et direct:
Maintenant:
la source
Init docstring
aussi, y a-t-il un moyen de le faire dans la définition deY
? La seule façon dont j'ai pu le faire est d'utiliser__init__.__doc__ = X.__init__.__doc__ + " Also another param"
la__init__
définition suivante,Y
mais cela semble gâcher le formatage, provoquant des espaces supplémentaires supplémentaires.Un style mixte qui peut conserver à la fois la syntaxe héritée de docstring et l'ordre préféré peut être:
Avec le même résultat que celui d'Alex:
Thin Ice: jouer avec docstring peut rendre votre module inutilisable avec
python -OO
, attendez-vous à:la source
J'ai écrit custom_inherit pour fournir des outils simples et légers pour gérer l'héritage docstring.
Il est également livré avec de jolis styles par défaut pour fusionner différents types de docstrings (par exemple, des docstrings au format Numpy, Google et reST). Vous pouvez également fournir votre propre style très facilement.
Les sections de docstring qui se chevauchent seront reportées à la section de l'enfant, sinon elles sont fusionnées avec une mise en forme agréable.
la source