6
votes

Pydoc / Aide () peut-il masquer la documentation pour les méthodes et attributs de classe héritées?

Lors de la déclaration d'une classe qui hérite d'une classe spécifique: xxx

la documentation pour la classe c répertorie toutes les méthodes de dict (Soit via aide (C) ou pydoc ).

existe un moyen de masquer les méthodes héritées de la documentation générée automatiquement (la chaîne de documentation peut-il faire référence à la classe de base, pour des méthodes non écrasées)? Ou est-ce impossible?

Ceci serait utile: pydoc répertorie les fonctions définies dans un module après ses classes. Ainsi, lorsque les classes ont une très longue documentation, beaucoup d'informations moins qu'utiles sont imprimées avant que les nouvelles fonctions fournies par le module soient présentées, ce qui rend la documentation plus difficile à exploiter (vous devez ignorer toute la documentation pour les méthodes héritées. jusqu'à ce que vous atteigniez quelque chose de spécifique au module documenté).


0 commentaires

3 Réponses :


0
votes

pydoc et l'aide intégré ne prend pas en charge cela, mais il n'y a aucune raison pour ne pas pouvoir écrire votre propre outil (peut-être en modifiant la source de Pydoc) qui aurait le comportement que vous désirez. Il suffit de marcher sur la dict de classes pour obtenir les attributs définis localement, puis recherchez des choses qui ont Doc en tant qu'attribut.


1 commentaires

Merci. Je voulais juste savoir si utilisateurs pourrait obtenir directement une documentation pydoc plus utilisable pour mes modules en les modifiant. Il est bon de savoir que pydoc et aide () sont limités, à cet égard.



1
votes

Vous pouvez donner à votre classe une métaclasse de classe A avec la méthode spéciale __ dir __ qui renvoie sa propre liste d'attributs. PYDOC utilisera cette liste.

Notes:

  • Cela affectera également le comportement de dir () .
  • Dans de rares cas, l'utilisation de métaclasses est connue pour ouvrir un portail à une dimension d'enfer.

1 commentaires

Merci d'avoir mentionné cela. J'ai essayé de faire ce que vous suggérez (en adaptant des exemples de voidspace.org.uk/ python / articles / métaclasses.shtml ), mais pendant que le comportement pydoc est modifié, aucun attribut n'est affiché. Ce serait bien si vous pouviez fournir du code. :)



3
votes

J'ai eu le même problème et je l'ai résolu sur Python 2.7.6 pour Windows (x86) en ajoutant 3 lignes à pydoc.py. Instructions:

  1. Faites votre propre copie de lib \ pydoc.py
  2. Trouver toutes les occurrences du héritée variable (3 fois, sur mon compte) dans le fichier et définissez-le sur une liste vide juste après sa définition. Par exemple, j'ai eu la ligne 809:

    attrs, héritée = _split_list (attrs, lambda t: t [2] est ceclass)

    et écrit hérité = [] sur une nouvelle ligne ci-dessous.

    Maintenant, il n'imprime plus les méthodes héritées.


0 commentaires