我有许多C函数接受不同的参数,例如
foo_i(int a)
foo_c(char c)
有没有可能在pythoncapi中重载这些函数?你知道吗
我尝试使用下表中的方法:
static PyMethodDef test_methods[] = {
{"foo", (PyCFunction)foo_i, METH_VARARGS, "int"},
{"foo", (PyCFunction)foo_c, METH_VARARGS, "char"},
{NULL, NULL, 0, NULL}
};
但是当我从python调用foo时,我总是使用表底部的函数。你知道吗
关于如何在python c-api中使用foo()调用foo i()和foo c()有什么想法吗?你知道吗
谢谢!你知道吗
要么给它们不同的Python级别的名称,要么编写一个包装函数来检查提供的参数并将其分派给正确的“real”函数。Python本身不直接支持基于参数类型重载函数。你知道吗
如果您想要为您编写包装器,您可以看看
pybind11
,它确实允许您尝试的重载(它是通过引擎盖下的类型检查包装器来实现的,所以它只是语法上的糖分,而不是行为上的改变)。你知道吗未测试示例代码:
相关问题 更多 >
编程相关推荐