繁体   English   中英

元组由swig为C ++向量生成的python包装器返回

[英]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.istd_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM