Python C延長:メソッドシグニチャーのための書類?
-
12-09-2019 - |
質問
皆様にお伝えしたくて書き込みC extensionsていただきたいと思いますように、署名の方法は見えます。
static PyObject* foo(PyObject *self, PyObject *args) {
/* blabla [...] */
}
PyDoc_STRVAR(
foo_doc,
"Great example function\n"
"Arguments: (timeout, flags=None)\n"
"Doc blahblah doc doc doc.");
static PyMethodDef methods[] = {
{"foo", foo, METH_VARARGS, foo_doc},
{NULL},
};
PyMODINIT_FUNC init_myexample(void) {
(void) Py_InitModule3("_myexample", methods, "a simple example module");
}
今の場合(後のビルで...)を負荷時のモジュールを見て、そのユーザー評価:
>>> import _myexample
>>> help(_myexample)
取得します:
Help on module _myexample:
NAME
_myexample - a simple example module
FILE
/path/to/module/_myexample.so
FUNCTIONS
foo(...)
Great example function
Arguments: (timeout, flags=None)
Doc blahblah doc doc doc.
すればよいのでしょうかも特定できることに交換 foo(...) による foo(タイムアウト、フラグ=None)
したらよいです。いかがですか?
解決
私の通常のアプローチを見れば分からないことこのようには:"を使用して有効にする。
基本的には、その標準モジュールはpythonのような特徴が可能です。の源例えばこちら)すべきですが、実はもは標準モジュールの追加の試作後の自動出力されます。このように:
torsten@pulsar:~$ python2.6 >>> import fcntl >>> help(fcntl.flock) flock(...) flock(fd, operation) Perform the lock operation op on file descriptor fd. See the Unix [...]
ように上流には使用しないような特徴で、私の想定ではございません。:-)
大丈夫、チ電流python3k源はまだまだ。この署名が発生する pydoc.py
のpython源はこちら pydoc.py.関係を抜粋したか線1260:
if inspect.isfunction(object): args, varargs, varkw, defaults = inspect.getargspec(object) ... else: argspec = '(...)'
.プロジェクトを作成するisfunction trueの場合、ただちにパージを行うオブジェクトの文書は依頼はPythonの機能です。ものC実装機能と考えられるbuiltinsて得に探しましょ name(...)
としての出力に出力します。
他のヒント
で7年 ができる署名のためのC-拡張機能とクラス.
Python自体の 引数のクリニック 動作するフェースの通称です。その力学を __text_signature__
することに注意して下さいintrospected(例えば、 help
).@MartijnPieters説明このプロセスなど この答え.
すが、実際には、引数の診療所からpythonというダイナミックなファッションが私は好きのマニュアル方法:追加の署名のdocstring:
お場合:
PyDoc_STRVAR(
foo_doc,
"foo(timeout, flags=None, /)\n"
"--\n"
"\n"
"Great example function\n"
"Arguments: (timeout, flags=None)\n"
"Doc blahblah doc doc doc.");
また重この私のパッケージ: iteration_utilities/src
.いることを示した利用の拡張機能によって明らかにされたこのパッケージには:
>>> from iteration_utilities import minmax
>>> help(minmax)
Help on built-in function minmax in module iteration_utilities._cfuncs:
minmax(iterable, /, key, default)
Computes the minimum and maximum values in one-pass using only
``1.5*len(iterable)`` comparisons. Recipe based on the snippet
of Raymond Hettinger ([0]_) but significantly modified.
Parameters
----------
iterable : iterable
The `iterable` for which to calculate the minimum and maximum.
[...]
のdocstringのためにこの関数を定義して このファイル.
現だけではないんだよこ ができないからpython < 3.4 きを追いかけなければならない一定の規則に従:
必要なものを含
--\n\n
後の署名を定義する。は十分にコミュニケーションの第一線のdocstring.
この署名有効にする必要がある
foo(a, b=1, c)
失敗しない)"を定義することができ位置引数の後に引数とデフォルトです。できるだけで一署名を表します。のではない)をご利用の場合のようなもの:
foo(a) foo(x, a, b) -- Narrative documentation