使用C API创建用python声明的python类的实例
我想用C API创建在使用C API创建用python声明的python类的实例,python,c,python-c-api,Python,C,Python C Api,我想用C API创建在\uuuu main\uuu范围内定义的Python类的实例 例如,该类称为MyClass,定义如下: class MyClass: def __init__(self): pass 类类型位于\uuuuu main\uuuu范围内 在C应用程序中,我想创建这个类的一个实例。使用PyInstance\u New可以简单地实现这一点,因为它采用了类名。但是,Python3中没有此功能 任何关于替代方案的帮助或建议都将不胜感激 谢谢,保罗我相信最简单的
\uuuu main\uuu
范围内定义的Python类的实例
例如,该类称为MyClass
,定义如下:
class MyClass:
def __init__(self):
pass
类类型位于\uuuuu main\uuuu
范围内
在C应用程序中,我想创建这个类的一个实例。使用PyInstance\u 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", "");
当然还有错误检查。您只需要DECREFinstance
就可以了,其他两个都是借来的引用