どこPythonのpydocのヘルプ機能は、その内容を取得していますか?

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

  •  21-09-2019
  •  | 
  •  

質問

私は、呼び出し可能なオブジェクトの多くを持っており、それらはすべて正しく記入__doc__文字列を持っていますが、それらのヘルプを実行すると__doc__に基づいてヘルプのではなく、自分のクラスのヘルプを生成します。

私は彼らに助けを実行すると、基本的に、彼らは実際の機能の代わりに、道具が__call__そのクラスのインスタンスだった場合、私はなるだろうどのように見えるというカスタマイズされたヘルプを生成すること、それを変更したい。

のコードでは、私はこれの出力をしたいと思います:

class myCallable:
    def __init__(self, doc):
        self.__doc__ = doc

    def __call__(self):
        # do some stuff
        pass

myFunc = myCallable("some doco text")
help(myFunc)

より、この出力のようになります:

def myFunc():
    "some doco text"
    # do some stuff
    pass

help(myFunc)
役に立ちましたか?

解決

helpモジュールに実装)pydoc関数は、インスタンスごとのドキュメンテーション文字列を検索するために用意されていません。私は明示的な支援を提供するための方法があったかどうかを確認するためにモジュールを介して簡単に見てましたが、があるようには思えません。それはあるものの種類を決定するためにinspectモジュールを使用し、あなたのmyFuncという関数のように見えていません、それはインスタンスのように見えます。代わりに、インスタンスのクラスについてのヘルプを印刷します。

pydocだから

類似したあなたは__doc__属性を追加することができます__help__する場合、それはいいだろうが、そのためのサポートはありません。

私はそれを提案することを躊躇しますが、あなたの最善の策は、新しいhelp関数を定義するかもしれません。

old_help = help
def help(thing):
    if hasattr(thing, '__help__'):
        print thing.__help__
    else:
        old_help(thing)

と、あなたのインスタンスで__help__属性を入れます:

class myCallable:
    def __init__(self, doc):
        self.__doc__ = doc
        self.__help__ = doc

他のヒント

私はあなたの質問が正確であるかについて非常に明確ではありませんよ。私の理解では、クラスとそれに定義された機能を持っていては、Pythonからその関数のヘルプテキストを取得する場所を知りたいということです。

Pythonはそのクラス/メソッドで提供されるドキュメント文字列からヘルプテキストを取得します。

あなたはそのクラスのクラス「A」及び方法「F」を持っていると「F」機能におけるドキュメンテーション文字列がある場合は、次の端末のダンプは、あなたの質問をクリアに役立つはずます:

>>> class A:
        def __init__(self):
            self.c = 0   # some class variable
        def f(self, x):
            """this is the documentation/help text for the function "f" """
            return x+1

>>> help(A.f)
Help on method f in module __main__:

f(self, x) unbound __main__.A method
this is the documentation/help text for the function "f" 

>>> A.f.__doc__
'this is the documentation/help text for the function "f" '
ホープ、このことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top