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

eud*_*xos 5 boost-python pybind11

我正在考虑从boost :: python到pybind11移植一个复杂的代码,但是我对缺少类似的东西感到困惑boost::python::extract<...>().check()。我读到的pybind11::cast<T>可用于从中提取c ++对象py::object,但是检查是否可以进行强制转换的唯一方法是调用它并在强制转换失败时捕获异常。有什么我要注意的吗?

Mal*_*ick 5

isinstance将完成这项工作(文档):

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))  
{
   ...
}  
Run Code Online (Sandbox Code Playgroud)

  • @LarryGritz 同上:`py::isinstance&lt;MyCustomClass&gt;(obj)`。 (2认同)