python - 是否有可能为绑定(bind)到 python 的 C++ 库获取绝地自动完成功能?

标签 python c++ binding python-jedi pybindgen

我正在使用 vim 和 jedi-vim 来编辑一些 python 代码。但是,我们使用的一些库是 C++ 共享库,我们使用 pybindgen 为其生成了 python 绑定(bind)。使用 jedi-vim 时,我没有获得任何类和方法的签名,只是它们的列表。

例如,在这个库中,https://github.com/jorisv/SpaceVecAlg如果我安装库并导入它:

import spacevecalg as sva

然后,sva. 将正确显示所有一阶函数和类。但是,如果我选择第一个,sva.ABInertia( jedi 将不会向我推荐任何类构造函数。

我想我必须以某种方式将类定义导出到一种 python 文档中,我想我可以为此使用 doxygen 注释,但我不知道如何将额外的文档提供给 jedi(或任何其他完成引擎,例如内置于 IPython 中的引擎)。

非常感谢!

最佳答案

您不能向 Jedi 提供额外的文档。但是,您可以以 Jedi 理解的方式设置 __doc__ 属性。如果您以与标准库相同的方式定义调用签名,我想它应该可以工作。

作为旁注,我必须提到在 Python 3.4+ 中有一种更好的定义文档字符串的方法。恕我直言,这是定义它的正确方法。我不确定具体该怎么做(但有一些方法可以使用它):

>>> inspect.signature(exit)
<inspect.Signature object at 0x7f2b5a05aa58>
>>> str(inspect.signature(exit))
'(code=None)'

Jedi现在还不懂,但以后肯定会。

关于python - 是否有可能为绑定(bind)到 python 的 C++ 库获取绝地自动完成功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26052450/

相关文章:

python - 无法导入 Scrapy 的设置模块或其 scrapy.cfg

python - 使用行和列多重索引和给定顺序从表格转换为矩阵

c# - 命令 - 从 DataGridTemplateColumn 绑定(bind)

c++ - 通过作为参数传递的指针更改 int 变量的值?

sql - 重新分配 ItemsSource - 使用 ItemsSource 之前,项目集合必须为空

wpf - 在没有转换器的情况下根据 bool 值绑定(bind) Image.Source?

python - 唯一字典列表

python - Pyre-check 无法找到 Typeshed

c++ - 何时使用静态类函数而不是命名空间函数?

c++ - 为什么局部静态变量是 BSS 段的一部分?