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