Pau*_*aul 7 c python python-c-api
我想创建一个__main__
使用C API 在作用域中定义的Python类的实例.
例如,调用该类MyClass
并定义如下:
class MyClass:
def __init__(self):
pass
Run Code Online (Sandbox Code Playgroud)
类类型存在于__main__
范围内.
在C应用程序中,我想创建此类的实例.这可能是简单的,PyInstance_New
因为它需要类名.但是这个功能在Python3中不可用.
任何对替代品的帮助或建议都表示赞赏.
谢谢,保罗
Ale*_*lli 18
我认为最简单的方法是:
/* 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", "");
Run Code Online (Sandbox Code Playgroud)
加上当然错误检查.instance
完成后只需要DECREF ,另外两个是借来的引用.