Python C扩展:文档的方法签名?

我正在编写C扩展,我想让我的方法的签名可见为内省.

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(…)(超时,标志=无)

我可以这样做吗?怎么样?

解决方法:

我通常的方法是找出这样的事情:“使用源”.

基本上,我认为python的标准模块在可用时会使用这样的功能.查看源代码(for example here)应该有所帮助,但实际上即使是标准模块也会在自动输出后添加原型.像这样:

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 [...]

因为上游没有使用这样的功能,我认为它不存在.

上一篇:android – filterscript文档在哪里(我该如何使用它)?


下一篇:java – 如何自动化REST API文档(Jersey实现)