[英]pybind11: from c/c++ get number of arguments to python function
[英]Pybind11 - Function with unknown number of arguments
我想得到一个参数列表
我当前的 C++ 代码:
m.def("test", [](std::vector<pybind11::object> args){
return ExecuteFunction("test", args);
});
我当前的python代码:
module.test(["-2382.430176", "-610.183594", "12.673874"])
module.test([])
我希望我的 python 代码看起来像这样:
module.test("-2382.430176", "-610.183594", "12.673874")
module.test()
如何获取通过 Python 传递的所有参数?
这样的通用函数module.test(*args)
可以使用 pybind11 创建:
void test(py::args args) {
// do something with arg
}
// Binding code
m.def("test", &test);
或者
m.def("test", [](py::args args){
// do something with arg
});
有关更多详细信息,请参阅接受 *args 和 **kwargs以及示例。
m.def("test", [](const pybind11::args& args){ std::vector<pybind11::object> pyArgs; for (const auto &arg : args) { pyArgs.push_back(arg.cast<pybind11::object>()); } return ExecuteFunction("test", pyArgs); });
我不得不承认我不完全确定你想要做什么,但这里有一个想法:
def wrapper(args*)
return module.test(args)
还有其他方法可以制作这样的包装器,但如果我正确理解您的问题,这应该可以工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.