3

を使用していくつかのメソッドを呼び出せるようにしたい場合は、メソッドを定義するときにセンチネル オブジェクトNoneを使用する必要があります。

 _sentinel = object()
 def foo(param1=_sentinel):
     ...

これにより、呼び出しが可能になりfoo(param1=None)、 のような呼び出しの違いを生むことができますfoo()

問題は、Sphinx がメソッドを文書化すると、次のように記述されることです。

mymodule.foo(param1=<object object at 0x108c1a520>)

これらの関数のユーザーフレンドリーな出力をSphinxに納得させるにはどうすればよいですか?

センチネルアプローチを使用して3〜4個のパラメーターがある場合、ドキュメントがどのように見えるかを想像してください。

4

3 に答える 3

1

関数の外部にオブジェクトを作成する番兵がいる限り、Sphinxをより「友好的」に説得することはできないと思います。Sphinxのautodoc拡張機能はモジュールをインポートします。これは、モジュールレベルのコードが実行されることを意味します。

このようなものは使えませんか?

def foo(param1=None):
    if param1 == None:
        param1 = whatever you want...
    else:
         ... 
于 2011-08-08T18:45:12.167 に答える
1

これは、autodoc ディレクティブで関数シグネチャを手動で指定することで処理できます。たとえば、次のようになります。

.. automodule:: pymorphy.contrib.tokenizers

    .. autofunction:: extract_tokens(foo, bar)

    .. autofunction:: extract_words
于 2011-08-08T20:38:17.903 に答える