Peut-pydoc / help () cacher la documentation des méthodes et des attributs de classe hérités?

StackOverflow https://stackoverflow.com/questions/2857247

Question

Lorsque vous déclarez une classe qui hérite d'une classe spécifique:

class C(dict):
    added_attribute = 0

la documentation pour les listes de C de classe toutes les méthodes de dict (soit par help(C) ou pydoc).

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

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

Était-ce utile?

La solution

pydoc et la commande interne help ne supportent pas, mais il n'y a aucune raison que vous ne pouviez pas écrire votre propre outil (peut-être en modifiant la source de pydoc) qui aurait le comportement que vous désirez. Il suffit de marcher le dict des classes pour obtenir les attributs définis localement, alors regardez des choses qui ont doc comme attribut.

Autres conseils

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

  1. faire votre propre copie Lib \ pydoc.py
  2. trouver toutes les occurences variable inherited (3 fois, sur mon nombre) dans le fichier et fixé à une liste vide juste après qu'il est défini . Par exemple, je suis en ligne 809:

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

et a écrit inherited = [] sur une nouvelle ligne en dessous.

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

Vous pouvez donner à votre classe un métaclasse avec le __dir__ spécial méthode qui renvoie sa propre liste d'attributs. Pydoc utilisera cette liste.

Notes:

  • cela va aussi affecter le comportement des dir().
  • dans de rares cas, l'utilisation de métaclasses a été connu pour ouvrir un portail vers une dimension de l'enfer.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top