在boost.python中动态展示C ++

时间:2013-02-14 14:53:00

标签: c++ python boost boost-python

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

0 个答案:

没有答案