Crear instancia de una clase de python, declarada en python, con la API de C

Quiero crear una instancia de una clase de Python definida en el ámbito __main__ con la API de C.

Por ejemplo, la clase se llama MyClass y se define de la siguiente manera:

 class MyClass: def __init__(self): pass 

El tipo de clase vive bajo el scope __main__ .

Dentro de la aplicación C, quiero crear una instancia de esta clase. Esto podría haber sido simplemente posible con PyInstance_New ya que toma el nombre de la clase. Sin embargo, esta función no está disponible en Python3.

Cualquier ayuda o sugerencia de alternativas son apreciadas.

Gracias paul

Creo que el enfoque más simple es:

 /* get sys.modules dict */ PyObject* sys_mod_dict = PyImport_GetModuleDict(); /* get the __main__ module object */ PyObject* main_mod = PyMapping_GetItemString(sys_mod_dict, "__main__"); /* call the class inside the __main__ module */ PyObject* instance = PyObject_CallMethod(main_mod, "MyClass", ""); 

más, por supuesto, comprobación de errores. Solo necesita una instance DECREF cuando haya terminado con ella, las otras dos son referencias prestadas.