Boost Pythonを使用してC++とPythonを連携させています。このようなコードがあり、Pythonオブジェクトのインスタンスを作成し、メンバー関数Boostにメンバー関数が存在するかどうかを調べるpython :: object
bp::object myInstance;
// ... myInstance is initialized
bp::object fun = myInstance.attr("myfunction");
fun();
私はそれを呼び出す前にメンバー関数が存在するかどうかチェックしたいと思います。それが存在しなければ、私は電話したくない。
問題は、関数が存在しなくてもmyInstance.attr( "myfunction")の呼び出しが成功したことです。したがって、現在のコードに関数が存在するかどうかをテストする唯一の方法は、関数を呼び出して例外をキャッチすることです。
例外を含むことなく、または関数を呼び出すことなく、関数が存在するかどうかを確認する方法はありますか?
'// ... myInstanceのは、C++でPythonオブジェクトを初期化するinitialized'で最も悪いの一つであります'boost :: python'の文書化された部分とここではそれを残しました! – caps