どこPythonのpydocのヘルプ機能は、その内容を取得していますか?
-
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という関数のように見えていません、それはインスタンスのように見えます。代わりに、インスタンスのクラスについてのヘルプを印刷します。
類似したあなたは__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" '
ホープ、このことができます。