112 votes

Hériter des docstrings dans l'héritage des classes Python

J'essaie de faire de l'héritage de classe en Python. J'aimerais que chaque classe et classe héritée ait une bonne documentation. Donc je pense que pour la classe héritée, je voudrais qu'elle.. :

  • hériter de la docstring de la classe de base
  • peut-être ajouter une documentation supplémentaire pertinente à la docstring

Existe-t-il un moyen (éventuellement élégant ou pythonique) de faire ce genre de manipulation de la docstring dans une situation d'héritage de classe ? Et pour l'héritage multiple ?

3 votes

Je ne peux pas répondre car la question a malheureusement été fermée, mais à partir de Python 3.5, inspect.getdoc cherchera dans l'arbre d'héritage jusqu'à ce qu'il trouve une docstring.

1 votes

0voto

Durai Points 349

Il s'agit d'un très vieux fil de discussion. Mais si quelqu'un cherche un moyen simple, vous pouvez le faire avec __init_subclass__ qui est appelé chaque fois que vous héritez de cette classe.

def __init_subclass__(cls, **kwargs):
    super().__init_subclass__(**kwargs)
    parent_method_docstr = {}
    for i, v in ParentClass.__dict__.items():
        if v and callable(v) and v.__doc__ is not None:
            parent_method_docstr[i] = v.__doc__

    for i, v in cls.__dict__.items():
        if v and callable(v) and v.__doc__ is None and i in parent_method_docstr:
            v.__doc__ = parent_method_docstr[i]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X