我想知道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客户端要求在运行时公开特定的组合。