pybind11相当于boost :: python :: extract?

时间:2016-11-04 13:00:05

标签: boost-python pybind11

我正在考虑从boost :: python到pybind11的复杂代码的端口,但是我对boost::python::extract<...>().check()之类的东西感到困惑。我读pybind11::cast<T>可以用来从py::object中提取c ++对象,但是检查转换是否可行的唯一方法是调用它并在转换失败时捕获异常。有什么我可以忽略的吗?

1 个答案:

答案 0 :(得分:2)

isintance将完成这项工作(doc):

namespace py = pybind11;
py::object  obj =  ...
if (py::isinstance<py::array_t<double>>(obj))
{
    ....
} 
else if (py::isinstance<py::str>(obj))
{
   std::string val = obj.cast<std::string>();
   std::cout << val  << std::endl;
} 
else if (py::isinstance<py::list>(obj))  
{
   ...
}