为使用Python-C-API定义的相同自定义类型的函数设置不同的文档字符串 我在一个C++应用程序中嵌入Python,并编写了一个函数包装器(如 Boo::Python < /Cord>)。为了实现这一点,我创建了一个自定义python类型,定义了它的PyTypeObject结构,并设置了tp\u调用函数指针

为使用Python-C-API定义的相同自定义类型的函数设置不同的文档字符串 我在一个C++应用程序中嵌入Python,并编写了一个函数包装器(如 Boo::Python < /Cord>)。为了实现这一点,我创建了一个自定义python类型,定义了它的PyTypeObject结构,并设置了tp\u调用函数指针,python,c,python-3.x,python-c-api,Python,C,Python 3.x,Python C Api,这很好,但现在我希望能够设置包装函数的文档。目前,当我在Python解释器中运行help(some_函数)时,会打印一个通用文档。设置PyTypeObject结构的tp\u doc没有帮助,因为它为所有包装的函数提供相同的帮助字符串 我也试着打电话 PyObject_SetAttrString((PyObject*)a_wrapped_function, "__doc__", PyUnicode_FromString("some doc")) 但是这个调用返回-1,这意味着失败(这个属性可能被

这很好,但现在我希望能够设置包装函数的文档。目前,当我在Python解释器中运行
help(some_函数)
时,会打印一个通用文档。设置
PyTypeObject
结构的
tp\u doc
没有帮助,因为它为所有包装的函数提供相同的帮助字符串

我也试着打电话

PyObject_SetAttrString((PyObject*)a_wrapped_function, "__doc__", PyUnicode_FromString("some doc"))
但是这个调用返回-1,这意味着失败(这个属性可能被认为是只读的)

我考虑过为每个包装的函数创建一个新的
PyTypeObject
,但我还没有尝试,因为我认为这可能有点过分了


有没有一种很好的方法告诉Python为每个包装函数返回的文档字符串?

当然有一种方法。只需按照文档进行操作:

基本上,您需要做的是:

static PyMethodDef YourMethods[] = {
  { "yourMethod", yourMethod, METH_NOARGS, 
    "Your docstring for the method/function." },
   0};
然后只需在
PyModuleDef
中包含
YourMethods
,就可以了。

这可能会对您有所帮助