[英]tuple is returned by python wrapper generated by swig for a C++ vector
对于以下C ++ API:
std::vector<float> get_sweep_points()
{
return program->sweep_points;
}
Swig生成一个包装器,该包装器返回一个元组()而不是一个列表[] 。 为什么? 如何强制Swig将列表返回给python。
如果使用std_vector.i
, std_vector.i
获得由std_vector.i
实现的std_vector.i
。 如果您不喜欢它,则必须编写自己的类型图。
这是一个覆盖默认行为(不检查错误)并返回列表而不是元组的类型图:
%typemap(out) std::vector<int> (PyObject* obj) %{
obj = PyList_New($1.size());
for(auto i = 0; i < $1.size(); ++i)
PyList_SET_ITEM(obj, i, PyLong_FromLong($1[i]));
$result = SWIG_Python_AppendOutput($result, obj);
%}
当然,您也可以只执行v = list(get_sweep_points())
,现在它是一个列表:^)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.