Exponer una instancia de clase C ++ a un intérprete incrustado de Python

Estoy buscando una manera simple de exponer una instancia de clase C ++ a un intérprete incorporado en Python.

Tengo una biblioteca C ++. Esta biblioteca está envuelta (usando swig por el momento) y puedo usarla desde el intérprete de python Tengo un programa principal de C ++ que instancia una clase Foo de mi biblioteca e incrusta un intérprete de Python

e gustaría exponer mi instancia de Foo en el mundo C ++ al mundo de Python (y visto como una clase de Foo).

¿Es esto posible? De ser así, ¿cómo?

Creo que es casi como en la primera respuesta de:boost :: python :: ptr o PyInstance_New use

Supongo que esto significa que debería usarboost.Python para envolver mi biblioteca?

Mi único objetivo es manipular mi instancia de C ++ de Foo en el intérprete de Python incorporado (no estoy seguro de que se pueda hacer con el método anterior).

Espero que esté claro, gracias por tu ayuda.

actualiza

Gracias por tus respuestas. De hecho, ya he expuesto mi clase de Foo a python (con swig).

Lo que tengo

my clase Foo:

class Foo{...};

my biblioteca envuelta (incluida la clase Foo) expuesta a python: para poder iniciar el intérprete de python y hacer algo como esto:

import my_module
foo=my_modulde.Foo()

Lo que quiero

Tener un programa principal de C ++ que incorpora un intérprete de Python y manipula las variables mundiales de C ++.

int main(int argc, char **argv)
{
    Foo  foo;   // instanciates foo

    Py_Initialize();

    Py_Main(argc, argv); // starts the python interpreter
                         // and manipulates THE foo instance in it

    Py_Finalize();

    return 0;
}

Clearer ahora? :)

Respuestas a la pregunta(4)

Su respuesta a la pregunta