1

電話すると

help(Mod.Cls.f)

(ModはC拡張モジュールです)、出力を取得します

method_descriptor に関するヘルプ:

ふ(...)
    doc_string

ヘルプ出力が次の形式になるようにするには、何をする必要がありますか?

モジュール Mod のメソッド f に関するヘルプ:

f(x、y、z)
    doc_string

たとえば、random.Random.shuffle のように?

現在、私の PyMethodDef エントリは次のとおりです。

{ "f", f, METH_VARARGS, "doc_string" }
4

2 に答える 2

2

それはいけません。'pydoc' と 'help()' が使用する inspect モジュールには、C 関数の正確なシグネチャが何であるかを判断する方法がありません。あなたができる最善のことは、組み込み関数が行うことです: docstring の最初の行に署名を含めます:

>>> help(range)
Help on built-in function range in module __builtin__:

range(...)
    range([start,] stop[, step]) -> list of integers

...

random.shuffle の docstring が「正しい」ように見える理由は、それが C 関数ではないからです。Pythonで書かれた関数です。

于 2008-09-30T14:26:30.910 に答える
1

もちろん、トーマスの答えは正しいです。

多くの C 拡張モジュールには Python の「ラッパー」があり、標準の関数シグネチャやその他の動的言語機能 (記述子プロトコルなど) をサポートできることを簡単に付け加えておきます。

于 2008-09-30T17:35:36.197 に答える