在pybind11(C ++)中使用内置的“open”python方法?

时间:2018-04-20 01:43:24

标签: python c++11 python-3.6 pybind11

如何在pybind11中使用基本(“默认”/“内置”;不需要导入)python方法?

列表,词典和其他一些内容确实已经构建-in兼容性,但我专门针对(打开)的方法不包含在导入中。我知道绕过它的方法是创建一个包含“open”的方法的python文件,然后像任何导入的方法一样调用它,但我更愿意直接在C ++中使用(如果可能的话,使用pybind),否则半失败的目的。

非常感谢任何帮助/建议。

1 个答案:

答案 0 :(得分:2)

你错了。首先,内置名称为importable from builtins module(在Python 3中):

py::object open = py::module::import("builtins").attr("open");

其次,open也存在于io模块中,因此您还可以使用与上述行等效的以下行:

py::object open = py::module::import("io").attr("open");

这适用于Python 3,但最后一行也适用于Python 2.7。