Puede pydoc / ayuda () ocultar la documentación de los métodos heredados de la clase y atributos?

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

Pregunta

Cuando se declara una clase que hereda de una clase específica:

class C(dict):
    added_attribute = 0

la documentación para las listas C clase todos los métodos de dict (ya sea a través de help(C) o pydoc).

¿Hay una manera de ocultar los métodos heredados de la documentación generada automáticamente (la cadena de documentación puede hacer referencia a la clase base, por métodos no sobrescritos)? o es imposible?

Esto sería útil: listas pydoc las funciones definidas en un módulo después sus clases. Por lo tanto, cuando las clases tienen una larga documentación, mucha menos información útil se imprime antes de que las nuevas funciones proporcionadas por el módulo se presentan, lo que hace que la documentación más difícil de explotar (usted tiene que saltar toda la documentación de los métodos heredados hasta llegar a algo específico para el módulo que se está documentado).

¿Fue útil?

Solución

pydoc y la orden interna help no son compatibles con este, pero no hay razón para que no podría escribir su propia herramienta (tal vez por la fuente de la modificación de pydoc) que tendría el comportamiento deseado. Sólo hay que pasar el dict de clases para obtener los atributos definidos localmente, a continuación, buscar las cosas que tienen doc como un atributo.

Otros consejos

Yo tenía el mismo problema y lo resolvió en Python 2.7.6 para Windows (x86) mediante la adición de 3 líneas a pydoc.py. Instrucciones:

  1. hacer su propia copia de Lib \ pydoc.py
  2. encontrar todas las apariciones de la variables inherited (3 veces, en mi recuento) en el archivo y lo puso a una lista vacía justo después de que se define . Por ejemplo, tengo la línea 809:

    attrs, heredado = _split_list (attrs, lambda t: t [2] es thisclass)

y escribió inherited = [] en una nueva línea debajo de ella.

Ahora no se imprime métodos heredados más.

Usted puede dar su clase de una metaclase con el __dir__ método especial que devuelve su propia lista de atributos. Pydoc utilizará esta lista.

Notas:

  • esto también afectará el comportamiento de dir().
  • en casos raros, el uso de metaclases ha sido conocido para abrir un portal a una dimensión infernal.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top