0

我想知道 boost.python 是否允许在模块加载后将 C++ 功能暴露给 python。例如,如果这样的事情可能会很好:

#include <boost/python.hpp>

int a;

void expose_var() {
    boost::python::scope().attr( "a" ) = a;
}

BOOST_PYTHON_MODULE( mod )
{
    boost::python::def( "expose_var", expose_var, "Expose an attribute." );
}

然后在python中:

import mod
mod.expose_var()
mod.a = 2

使用类似的代码,当我调用等价的expose_var() 时出现错误:

AttributeError: 'NoneType' object has no attribute '__dict__'

我想这样做,因为我要公开一个大量模板化的 C++ 库,并且我不希望默认公开模板参数的所有可能组合。我想让 python 客户端要求在运行时公开特定的组合。

4

0 回答 0