私は列挙型のC++クラスを持っています。boost::python
でそれを模倣したいので、MyClass.value
をPythonで書くことができます。 boost::python::class_
にはenum_
メソッドがありません。回避策を探していました。クラススコープenum
Iは、第一(
add_property
用get_signature
で)コンパイルエラーを与えるMyClass{ enum{value1,value2}; }; class_<MyClass>("MyClass").add_property("value1",&[](){return value1;}).staticmethod("value1");
等ラムダと試みました。私はそれぞれの値に対してゲッターメソッドを作成できることは知っていますが、それは私にとって非常に扱いにくい(タイピング賢い)ようです。
attr
を使用して:
auto classObj=class_<MyClass>("MyClass"); classObj.attr("value1")=(int)value1; classObj.attr("value2")=(int)value2;
が、それはインスタンスへの参照を返す
.def
し、他の方法のように連鎖させることはできません。
さらに洗練されたソリューションがありますか?あなたはスコープを使用してそれを行うことができます
'MyClass'の外では、' MyClass :: value1'のような列挙型の値を参照する必要がありますが、私はboost-pythonの要素を持っています。 –
+1これを適切にフォーマットするのは面倒です。 –