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

例如,所述类被称为MyClass并且被定义为如下:

class MyClass:
    def __init__(self):
        pass

在类类型住下__main__范围。

在C应用程序,我想创建这个类的一个实例。因为它需要的类名这可能是简单地可能的PyInstance_New。不过这个功能不可用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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top