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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top