6

特定のクラスから継承するクラスを宣言する場合:

class C(dict):
    added_attribute = 0

クラスのドキュメントには、 (〜または)Cのすべてのメソッドがリストされています。dicthelp(C)pydoc

自動生成されたドキュメントから継承されたメソッドを非表示にする方法はありますか(上書きされないメソッドの場合、ドキュメント文字列は基本クラスを参照できます)?またはそれは不可能ですか?

これは便利です:モジュールのクラスのpydocにモジュールで定義された関数をリストします。したがって、クラスに非常に長いドキュメントがある場合、モジュールによって提供される新しい関数が提示される前に、有用ではない多くの情報が出力され、ドキュメントの悪用が困難になります(継承されたメソッドのすべてのドキュメントをスキップする必要があります)文書化されているモジュールに固有の何かに到達するまで)。

4

3 に答える 3

3

同じ問題が発生し、Python 2.7.6 for Windows(x86)でpydoc.pyに3行追加することで解決しました。指示:

  1. Lib\pydoc.pyの独自のコピーを作成します
  2. inheritedファイル内の変数のすべての出現箇所(私のカウントでは3回)を見つけて、定義された直後に空のリストに設定します。たとえば、809行目です。

    attrs、inherited = _split_list(attrs、lambda t:t [2] is thisclass)

inherited = []その下に新しい行を書きました。

継承されたメソッドを出力しなくなりました。

于 2014-07-23T21:36:33.500 に答える
1

__dir__独自の属性リストを返す特別なメソッドを使用して、クラスにメタクラスを与えることができます。Pydocはこのリストを使用します。

ノート:

  • これは、の動作にも影響しますdir()
  • まれに、メタクラスを使用すると、地獄の次元へのポータルが開かれることが知られています。
于 2012-06-12T06:40:20.637 に答える
0

pydocビルトインはこれをサポートしてhelpいませんが、希望する動作をする独自のツールを作成できなかった理由はありません(おそらく、pydocのソースを変更することによって)。クラスの辞書を歩いてローカルで定義された属性を取得し、属性としてdocを持つものを探します。

于 2010-08-12T01:25:36.837 に答える