1

当我打电话

help(Mod.Cls.f)

(Mod 是一个 C 扩展模块),我得到了输出

关于method_descriptor的帮助:

F(...)
    文档字符串

我需要做什么才能使帮助输出具有以下形式

模块 Mod 中方法 f 的帮助:

f(x, y, z)
    文档字符串

例如,就像 random.Random.shuffle 一样?

我的 PyMethodDef 条目当前是:

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

2 回答 2

2

你不能。'pydoc' 和 'help()' 使用的检查模块无法弄清楚 C 函数的确切签名是什么。你能做的最好的就是内置函数的作用:在文档字符串的第一行包含签名:

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

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

...

random.shuffle 的文档字符串看起来“正确”的原因是它不是 C 函数。这是一个用 Python 编写的函数。

于 2008-09-30T14:26:30.910 回答
1

当然,托马斯的回答是对的。

我只想补充一点,许多 C 扩展模块在它们周围都有一个 Python“包装器”,这样它们就可以支持标准函数签名和其他动态语言特性(例如描述符协议)。

于 2008-09-30T17:35:36.197 回答