Come posso usare la classe C ++ in Python?
Domanda
Ho implementato una classe in C ++. Voglio usarlo con Python. Suggerisci il metodo passo per passo ed elabora ogni passaggio. Qualcosa del genere ...
class Test{
private:
int n;
public:
Test(int k){
n=k;
}
void setInt(int k){
n = k;
}
int getInt(){
return n;
}
};
Ora, in Python
>>> T1 = Test(12)
>>> T1.getInt()
12
>>> T1.setInt(32)
>>> T1.getInt()
32
Per favore, suggerisci. Come posso farlo? NOTA: vorrei conoscere il modo manuale per farlo. Non voglio alcuna dipendenza da libreria di terze parti.
Soluzione
Guarda Boost.Python . È una libreria per scrivere moduli Python con C ++.
Cerca anche SWIG che può anche gestire moduli per altri linguaggi di scripting. L'ho usato in passato per scrivere moduli per la mia classe e usarli in Python. Funziona alla grande.
Puoi farlo manualmente usando API Python / C , scrivendo tu stesso l'interfaccia . È piuttosto di basso livello, ma acquisirai molte ulteriori conoscenze su come Python funziona dietro la scena (e ne avrai bisogno quando usi comunque SWIG).
Altri suggerimenti
ctypes è buono. È davvero facile da usare e viene fornito di serie con Python. Sfortunatamente può parlare solo con librerie condivise (Unix) o DLL (Windows) che hanno un'interfaccia in stile C, il che significa che non è possibile interfacciarsi direttamente con un oggetto C ++. Ma potresti usare un sistema di handle in cui un handle si riferisce a un oggetto particolare.
>>> getInt(h)
12
Penso che sia semplice, facile da capire e non richieda librerie extra.
Suggerirei di provare SWIG o sip (KDE / PyQt).
Link SWIG: http://www.swig.org/
Link SIP: http://freshmeat.net/projects/python-sip/
Questi possono essere usati per avvolgere le classi C ++ e fornire loro un'interfaccia Pythonic.