モジュールがロードされた後、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 クライアントに要求させたいと思います。