3

我正在尝试记录主要是 C 扩展模块的 pycurl。

在这个扩展模块中有一些类,用 C 语言编写。它们有方法。这些方法上定义了文档字符串:

>>> 帮助(pycurl.Curl().close)
关于内置函数关闭的帮助:

关(...)
    关闭()-> 无。关闭句柄并结束 curl 会话。

但是,这些方法并没有在类本身上定义:

>>> 目录(pycurl.Curl)
['__call__','__class__','__cmp__','__delattr__','__doc__','__eq__','__format__','__ge__','__getattribute__','__gt__','__hash__','__init__',' __le__','__lt__','__module__','__name__','__ne__','__new__','__reduce__','__reduce_ex__','__repr__','__self__','__setattr__','__sizeof__','__str__' , '__subclasshook__']
>>> pycurl.Curl.close
回溯(最近一次通话最后):
  文件“”,第 1 行,在
AttributeError: 'builtin_function_or_method' 对象没有属性 'close'

结果,当我尝试使用 automethod 记录它们时,sphinx 说这些方法不存在:

    .. 自动方法:: pycurl.Curl.close

curlobject.rst:13:警告:autodoc:无法从模块 u'pycurl' 导入方法 u'Curl.close';引发了以下异常:
回溯(最近一次通话最后):
  文件“/usr/local/lib/python2.7/site-packages/Sphinx-1.2-py2.7.egg/sphinx/ext/autodoc.py”,第 342 行,在 import_object
    obj = self.get_attr(obj, part)
  文件“/usr/local/lib/python2.7/site-packages/Sphinx-1.2-py2.7.egg/sphinx/ext/autodoc.py”,第 241 行,在 get_attr
    return safe_getattr(obj, name, *defargs)
  文件“/usr/local/lib/python2.7/site-packages/Sphinx-1.2-py2.7.egg/sphinx/util/inspect.py”,第 114 行,在 safe_getattr
    引发 AttributeError(name)
属性错误:关闭

如何让 sphinx 从 C 扩展模块中定义的方法中获取文档字符串?

4

0 回答 0