Como expor uma classe C ++ ao Python sem criar um módulo

Eu quero saber se existe alguma maneira de expor uma classe C ++ para Python, mas sem construir uma biblioteca compartilhada intermediária.

Aqui está o meu cenário desejável. Por exemplo, tenho a seguinte classe C ++:

class toto
     {
     public:
        toto(int iValue1_, int iValue2_): iValue1(iValue1_), iValue2(iValue2_) {}
        int Addition(void) const {if (!this) return 0; return iValue1 + iValue2;}

      private:
        int iValue1;
        int iValue2;
     };

Eu gostaria de converter de alguma forma esta classe (ou sua intance) para um PyObject *, a fim de enviá-lo como paremter (args) para, por exemplo, PyObject_CallObject:

PyObject* PyObject_CallObject(PyObject* wrapperFunction, PyObject* args)

Por outro lado, no meu lado python, eu terei um wrapperFunction que obtém o ponteiro na minha classe C ++ (ou sua instância) como parâmetro e chama seus métodos ou usa suas propriedades:

def wrapper_function(cPlusPlusClass):
    instance = cPlusPlusClass(4, 5)
    result = instance.Addition()

Como você pode ver, eu realmente não preciso / quero ter uma biblioteca compartilhada separada ou construir um módulo com python. Tudo o que preciso é encontrar uma maneira de converter um código C ++ em PyObject e enviá-lo para python. Eu não consigo encontrar uma maneira de fazer isso por bibliotecas python C, impulso ou SWIG.

Você tem alguma ideia? Obrigado pela ajuda.

questionAnswers(2)

yourAnswerToTheQuestion