PythonでC ++クラスを使用するにはどうすればよいですか?
質問
C ++でクラスを実装しました。 Pythonで使用したいです。 ステップごとの方法を提案し、各ステップを詳しく説明してください。 このようなもの...
class Test{
private:
int n;
public:
Test(int k){
n=k;
}
void setInt(int k){
n = k;
}
int getInt(){
return n;
}
};
今、Pythonで
>>> T1 = Test(12)
>>> T1.getInt()
12
>>> T1.setInt(32)
>>> T1.getInt()
32
提案してください。これを行うにはどうすればよいですか? 注:手動で行う方法を知りたいです。サードパーティのライブラリに依存したくない。
解決
Boost.Python をご覧ください。 PythonモジュールをC ++で作成するためのライブラリです。
また、他のスクリプト言語のモジュールも処理できる SWIG も調べてください。過去にそれを使用してクラス用のモジュールを作成し、Python内で使用しました。素晴らしい作品。
Python / C API を使用して手動でインターフェイスを記述し、手動で行うことができます。それはかなり低レベルですが、Pythonが舞台裏でどのように機能するかについて多くの追加知識を得ることができます(とにかくSWIGを使用するときに必要になります)。
他のヒント
ctypes が適しています。それは本当に使いやすく、Pythonに標準で付属しています。残念ながら、Cスタイルのインターフェースを持つ共有ライブラリ(Unix)またはDLL(Windows)としか通信できません。つまり、C ++オブジェクトに直接インターフェースすることはできません。ただし、ハンドルが特定のオブジェクトを参照するハンドルシステムを使用できます。
>>> getInt(h)
12
これはシンプルで理解しやすく、追加のライブラリを必要としないと思います。
SWIGまたはsip(KDE / PyQt)を試すことをお勧めします。
SWIGリンク: http://www.swig.org/
SIPリンク: http://freshmeat.net/projects/python-sip/
これらを使用して、C ++クラスをラップし、Pythonインターフェイスを提供できます。