Frage

Bei der Deklaration einer Klasse, die erbt von einer bestimmten Klasse:

class C(dict):
    added_attribute = 0

die Dokumentation für die Klasse C listet alle Methoden der dict (entweder durch help(C) oder pydoc).

Gibt es eine Möglichkeit die geerbten Methoden aus der automatisch generierte Dokumentation (das Docstring auf die Basisklasse beziehen, für Nicht-überschrieben Methoden) zu verbergen? oder ist es unmöglich?

Dies wäre nützlich: pydoc listet die in einem Modul definierten Funktionen nach seinen Klassen. Wenn also die Klassen eine sehr lange Dokumentation haben, viel weniger als nützliche Informationen, bevor die neuen Funktionen, die von dem Modul bereitgestellt gedruckt wird vorgestellt, die die Dokumentation schwieriger macht zu nutzen (Sie müssen alle Unterlagen für die geerbten Methoden überspringen bis Sie etwas spezifisch für das Modul wird dokumentiert).

erreichen
War es hilfreich?

Lösung

pydoc und die help builtin unterstützen dies nicht, aber es gibt keinen Grund, warum Sie nicht Ihr eigenes Werkzeug (vielleicht durch Modifizieren pydoc der Quelle) schreiben könnte, die das Verhalten haben würden Sie sich wünschen. Gehen Sie einfach die dict von Klassen, die lokal definierten Eigenschaften zu erhalten, dann suchen Sie nach Dingen, die haben doc als Attribut.

Andere Tipps

Ich hatte das gleiche Problem und löste es auf Python 2.7.6 für Windows (x86) durch Zugabe von 3 Zeilen zu pydoc.py. Anleitung:

  1. Ihre eigene Kopie von Lib machen \ pydoc.py
  2. finden Sie alle Vorkommen der inherited Variable (3-mal auf meiner Zählung) in der Datei und setzen Sie sich auf eine leere Liste direkt nach dem sie definiert ist . Zum Beispiel habe ich Linie 809:

    attrs, erbte = _split_list (attrs, Lambda-t: t [2] ist thisclass)

und schrieb inherited = [] auf eine neue Zeile darunter.

Nun ist es nicht geerbten Methoden druckt mehr.

Sie können Ihre Klasse eine Metaklasse mit dem speziellen Verfahren __dir__ geben, der seine eigene Liste der Attribute zurückgibt. Pydoc wird diese Liste verwenden.

Weitere Informationen:

  • das wird auch das Verhalten von dir() beeinflussen.
  • in seltenen Fällen, die Verwendung von metaclasses wurde bekannt, ein Portal zu einer Höllendimension zu öffnen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top