IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaçage autre langage Python Discussion :

apelle en C à partir d'une classe faite en python


Sujet :

Interfaçage autre langage Python

  1. #1
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Points : 91
    Points
    91
    Par défaut apelle en C à partir d'une classe faite en python
    bonjour,

    J'aimerais appeler une (des) méthode(s) contenue(s) dans une classe python depuis C.

    Cela importe mon fichier .py
    mymod = PyImport_ImportModule("sub_python");
    Le problème est que je ne sais pas comment rentrer a l'intérieur de ma classe.
    Auriez vous une idée.

    Merci.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Points : 329
    Points
    329
    Par défaut
    Je fais comme ça (ici un exemple basique sans arguments pour le constructeur, l'appel de méthode) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    PyObject* mod, *mdict, *pyclass, *pyinstance, *result;
     
    /* init py env */
    Py_Initialize();
     
    /* import module */
    mod = PyImport_ImportModule("mymodulename");
     
    /* get module __dict__ */
    mdict = PyModule_GetDict(mod);
     
    /* from mymodule.__dict__,  get class  */
    pyclass = PyDict_GetItemString(mdict, "myclassname");
     
    /* make class instance */
    pyinstance = PyInstance_New(pyclass, NULL, NULL);
     
    /* call method */
    result = PyObject_CallMethod(pyinstance, "mymethod", NULL);
    Py_XDECREF(result);
     
    /* release references */
    Py_XDECREF(pyinstance);
    Py_XDECREF(pyclass);
    Py_XDECREF(mdict);
    Py_XDECREF(mod);
    Py_Finalize();

  3. #3
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Points : 91
    Points
    91
    Par défaut
    Merci Tamiel, c'est exactement ce que j'avais fais, impeccable.

    J'en profite pour te poser une question. J'aimerais maintenant faire de l' interfacage de C++ vers du python. Oui, en fait j'ai fais un set en C++ est aimerais renvoyer tout ça vers python qui lui devra m'écrire les modifications dans un fichier spécifique.
    Je sais que je peux faire ça avec SWIG, mais n'y a t il pas plus simple : une espèce de bibliothèque dédié ou autre.
    Si j'ai bien compris SWIG va me créer une dll que j'importerais en python. Ensuite je devrais créer un fonction python qui prend en compte cette bibliothèque pour pouvoir ecrire dans mon fichier spécifique.
    ++

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Points : 329
    Points
    329
    Par défaut
    Le plus adapté pour de l'interfaçage C++ vers python c'est boost python.

    Ca parait un peu barbare et complexe au début mais c'est le plus complet pour faire du "wrapping" C++ -> Python

    http://www.boost.org/doc/libs/1_38_0...doc/index.html

  5. #5
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Points : 91
    Points
    91
    Par défaut
    Merci Tamiel de ta réponse et de ta réactivité.
    Boost, je ne connaissais pas. Bon je vais me plonger dans ces tutos et voir comment faire. Si j'ai un soucis, je sais à qui m'adresser ...
    Bonne soirée.

Discussions similaires

  1. Ajout d'une variable dans une class fait planter
    Par Geoff-sk8 dans le forum C++
    Réponses: 4
    Dernier message: 11/10/2006, 14h27
  2. Réponses: 26
    Dernier message: 09/07/2006, 17h42
  3. Réponses: 1
    Dernier message: 22/06/2006, 09h17
  4. Réponses: 6
    Dernier message: 21/05/2006, 20h37
  5. Réponses: 12
    Dernier message: 03/11/2005, 18h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo