Peut-pydoc / help () cacher la documentation des méthodes et des attributs de classe hérités?
-
27-09-2019 - |
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é).
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:
- faire votre propre copie Lib \ pydoc.py
-
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.