从 X 导入 Y 与 Boost.Python

from X import Y with Boost.Python

本文关键字:Boost Python 导入      更新时间:2023-10-16

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

from Base.Derived import Class

但是,我不知道如何使用Boost.Python执行此操作。该库提供了import.hhpp,可以让你做这样的事情

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);

"点"表示法中的每个名称都是其父级的属性。你的最后一段代码几乎是正确的(虽然,我怀疑与名称有些混淆(:

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