创建一个Python类,Python中宣布的情况下,与C API
-
18-09-2019 - |
题
我想创建与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
。
不隶属于 StackOverflow