扩展功能和'帮助'

时间:2008-09-30 14:18:14

标签: python cpython

当我打电话

help(Mod.Cls.f)

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

Help on method_descriptor:

f(...)
    doc_string

我需要做什么才能使帮助输出格式为

Help on method f in module Mod:

f(x, y, z)
    doc_string

就像是随机的.Random.shuffle,例如?

我的PyMethodDef条目目前是:

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

2 个答案:

答案 0 :(得分:2)

你做不到。检查模块,即“pydoc”和“help()”使用的,无法确定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编写的函数。

答案 1 :(得分:1)

当然,托马斯的回答是正确的。

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