120 votes

Comment utiliser l'autodoc de Sphinx pour documenter la méthode __init__(self) d'une classe ?

Sphinx ne génère pas de documentation pour __init__(self) par défaut. J'ai essayé ce qui suit :

.. automodule:: mymodule
    :members:

et

..autoclass:: MyClass
    :members:

Dans le fichier conf.py, la configuration suivante ajoute uniquement la docstring __init__(self) à la docstring de la classe ( la documentation autodoc de Sphinx semble convenir que c'est le comportement attendu, mais ne mentionne rien concernant le problème que j'essaie de résoudre) :

autoclass_content = 'both'

1 votes

Non, ce n'est pas ce qu'écrit la documentation, du moins à ce jour : "both" Both the class’ and the __init__ method’s docstring are concatenated and inserted. -> Par conséquent, il ne faut pas que ce soit seulement le __init__(self) mais aussi la docstring de la classe si vous l'avez. Pouvez-vous fournir un cas de test car si c'est le cas, cela ressemble à un bug, non ?

0voto

neo Points 586

Il s'agit d'une variante qui comprend uniquement __init__ s'il a des arguments :

import inspect

def skip_init_without_args(app, what, name, obj, would_skip, options):
    if name == '__init__':
        func = getattr(obj, '__init__')
        spec = inspect.getfullargspec(func)
        return not spec.args and not spec.varargs and not spec.varkw and not spec.kwonlyargs
    return would_skip

def setup(app):
    app.connect("autodoc-skip-member", skip_init_without_args)

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