gpt4 book ai didi

python - 通过 C-API 向模块添加新命令?

转载 作者:行者123 更新时间:2023-12-01 06:09:38 26 4
gpt4 key购买 nike

如何通过 C-API 向模块动态添加方法?我有很多需要注册的函数,它们不在同一个数组中。我假设我可以使用 NULL 方法表初始化模块,正如文档所说这是可能的。

PyObject *mymod = Py_InitModule("my", NULL);

一次添加一个方法的函数的名称是什么。

最佳答案

基本上,您必须首先获取模块字典:

d = PyModule_GetDict(m);

将模块名称存储在 PyString 对象中:

n = PyString_FromString("modname");

然后正确填充 PyMethodDef struct ml 并创建一个新的可调用对象:

v = PyCFunction_NewEx(&ml, (PyObject*)NULL, n);

并将此可调用函数添加到模块字典中:

PyDict_SetItemString(d, ml->ml_name, v);

我显然跳过了所有相关的错误检查。

这一切都是我对Py_InitModule4的解释确实如此(Py_InitModule 是一个使用默认参数调用 Py_InitModule4 的宏)。

关于python - 通过 C-API 向模块添加新命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6565175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com