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

标签 boost-python pybind11

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

最佳答案

isinstance将完成这项工作( 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))  
{
   ...
}  

关于boost-python - pybind11 相当于 boost::python::extract?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40423344/

相关文章:

C++ 指向重载函数的指针

c++ - 如何使用 boost::python 从派生类获取所有类属性名称?

python - 如何强制库(pybind11)包含Python3中的<Python.h>?

python - pybind11 - 包装重载赋值运算符?

c++ - 如何使用 boost::python 创建和使用 Python 对象的实例

python - conda安装boost后,libboost_python.lib和boost_python.lib有什么区别

c++ - 如何使用 boost::python 从 Python 类型中提取包装的 C++ 类型?

c++ - PyBind11 与 SystemC 使用 CMake : ImportError

python - 如何将共享指针列表传递给 pybind11 中的 C++ 对象

python - 需要哪个 $path 以便 g++/pybind11 可以找到 Python.h?