使用C API创建在python中声明的python类的实例

我想创建一个使用C API在__main__范围内定义的Python类的实例。

例如,该类称为MyClass ,定义如下:

 class MyClass: def __init__(self): pass 

类类型位于__main__范围内。

在C应用程序中,我想创建此类的实例。 这可能是PyInstance_New可以实现的,因为它需要类名。 但是这个function在Python3中不可用。

任何对替代品的帮助或建议都表示赞赏。

谢谢,保罗

我相信最简单的方法是:

 /* 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", ""); 

加上当然错误检查。 完成后只需要DECREF instance ,其他两个是借用的引用。