扩展函数与“帮助”
当我调用
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.Random.shuffle的格式?
我现在的PyMethodDef条目是:
{ "f", f, METH_VARARGS, "doc_string" }
2 个回答
1
托马斯的回答当然是正确的。
我想补充一点,很多C语言的扩展模块外面都有一个Python的“包装”,这样它们就能支持标准的函数格式和其他动态语言的一些特性(比如描述符协议)。
2
你不能这样做。inspect模块,也就是'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写的函数。