我想collections.namedtuple
从 boost::python 包装函数返回一个列表,但我不确定如何从 C++ 代码创建这些对象。对于其他一些类型,有一个方便的包装器(例如 dict),它使这很容易,但对于 namedtuple 却没有这样的东西。做这个的最好方式是什么?
dict列表的现有代码:
namespace py = boost::python;
struct cacheWrap {
...
py::list getSources() {
py::list result;
for (auto& src : srcCache) { // srcCache is a C++ vector
// {{{ --> Want to use a namedtuple here instead of dict
py::dict pysrc;
pysrc["url"] = src.url;
pysrc["label"] = src.label;
result.append(pysrc);
// }}}
}
return result;
}
...
};
BOOST_PYTHON_MODULE(sole) {
py::class_<cacheWrap,boost::noncopyable>("doc", py::init<std::string>())
.def("getSources", &cacheWrap::getSources)
;
}