从X导入Y与Boost.Python

时间:2017-07-01 23:17:52

标签: python c++ python-2.7 boost boost-python

我想从其他文件夹导入一个类。在另一个python脚本中我会做

from Base.Derived import Class

但是我无法弄清楚如何使用Boost.Python来做到这一点。该库提供了import.hpp,可以让你做这样的事情

object module = import("Base.Derived");

但是python中的等价物是

import Base.Derived

最终目标是将实例化的python对象转换为Base指针,因此首选使用Boost.Python。理想情况下,代码看起来像这样

object module = some form of "from Base.Derived import Class"

// Get a C++ pointer of the derived python class.
object derived = module.attr("Class")();
Card* card = extract< Card* >(derived);

1 个答案:

答案 0 :(得分:1)

“点”符号中的每个名称都是其父级的属性。你的最后一段代码几乎是正确的(虽然,我怀疑有些名字混淆):

boost::python::object Class = boost::python::import("Base.Derived").attr("Class");
boost::python::object class_instance = Class();