Hériter docstrings en Python héritage de classe
Je suis en train de faire quelques héritage de classe en Python. J'aimerais que chaque classe et de la classe héritée d'avoir de bonnes docstrings. Donc je pense que pour la classe héritée, j'aimerais qu'il:
- hériter de la classe de base docstring
- peut-être ajouter pertinentes des documents supplémentaires à la docstring
Est-il (éventuellement élégant ou pythonic) de faire ce genre de docstring de manipulation dans une classe de l'héritage de la situation? Que diriez-vous pour l'héritage multiple?
- Je ne peux pas répondre car la question était malheureusement fermé, mais comme de Python 3.5,
inspect.getdoc
la recherche de l'arbre d'héritage jusqu'à ce qu'il trouve une docstring. - Voir cette réponse.
Vous devez vous connecter pour publier un commentaire.
Vous n'êtes pas le seul! Il y avait une discussion sur
comp.lang.python
sur ce il ya un moment, et une recette a été créé. Check it out ici.Vous pouvez concaténer les docstrings facilement:
Cependant, ce qui est inutile. La plupart des outil de génération de documentation (Sphinx et Epydoc inclus) sera déjà tirer parent docstring, y compris pour les méthodes. Si vous n'avez pas à faire quoi que ce soit.
Pas particulièrement élégant, mais simple et direct:
Maintenant:
Init docstring
ainsi, est-il un moyen de le faire dans la définition deY
? Le seul moyen que j'ai été capable de le faire est d'utiliser__init__.__doc__ = X.__init__.__doc__ + " Also another param"
à la suite de la__init__
définition dansY
mais cela semble un gâchis avec la mise en forme, causant supplémentaires ajouté des espaces.Mixte stile qui peut préserver à la fois l'héritage docstring la syntaxe et le préféré de la commande peut être:
Avec la même sortie que Alex est un:
Glace mince: jouer avec docstring pouvez faire votre module inutilisable avec
python -OO
, attendez un peu:J'ai écrit custom_inherit à donner quelques simples, poids léger outils pour la manipulation de docstring de l'héritage.
Il est également livré avec quelques beaux styles par défaut pour la fusion des différents types de docstrings (par exemple, Numpy, Google, et reste formaté docstrings). Vous pouvez également fournir votre propre style très facilement.
Chevauchement docstring sections s'en remettent à l'enfant l'article, sinon, ils sont fusionnés ensemble, avec une belle mise en forme.