質問

ドキュメンテーション文字列内の繰り返しコンテンツに対処するための良い方法は何ですか?私は、ドキュメント文字列で説明する必要がある「標準」の引数を取る多くの機能を持っているが、これは維持・更新がはるかに簡単なように素敵で、一度だけドキュメンテーション文字列の関連する部分を書くことであろう。私は単純に次のことを試してみました。

arg_a = "a: a very common argument"

def test(a):
    '''
    Arguments:
    %s
    ''' % arg_a
    pass
私はhelp(test)を行うときに私はドキュメンテーション文字列が表示されていないので、

しかし、これは、仕事をしません。これを行うには良い方法はありますか?

役に立ちましたか?

解決

他の回答が言うように、あなたは関数オブジェクトの__doc__メンバーを変更する必要があります。これを行うには良い方法は、ドキュメンテーション文字列に書式設定を行いますデコレータを使用することです。

def fixdocstring(func):
    func.__doc__ = func.__doc__.replace('<arg_a>', 'a: a very common argument')
    #(This is just an example, other string formatting methods can be used as well.)
    return func

@fixdocstring
def test(a):
    '''
    Arguments:
    <arg_a>
    ''''
    pass

他のヒント

__doc__最もユーザー定義型に代入可能です。

arg_a = "a: a very common argument"

def test(a):
    pass

test.__doc__ = '''
    Arguments:
    %s
    ''' % arg_a
(少なくともないイグナシオが示唆するように明示的に__doc__を再割り当てせずに)私の知る限り、これを行うには明白な方法はありません。

しかし、私はこれを行うために恐ろしいことだと思います。このことを考えてみます:

私はあなたのコードをナビゲートし、ファイルの300行目でこのドキュメント文字列を読んでいたらどう? あなたは本当に私が行きたいの検索の引数に?

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