在pybind11中如何判断py::object是否为py::dict?
判断py::object是否为py::dict的方法
在pybind11中,py::object确实不是多态类型,所以dynamic_cast完全没法用来判断它是不是py::dict。最简单的判断方法是用py::isinstance模板函数:
// 传入目标类型和待判断对象,直接获取判断结果 bool is_dict_obj = py::isinstance<py::dict>(your_py_object);
这个函数内部会调用Python原生的isinstance()逻辑,能准确完成类型检查。
如果想直接对比类型对象,也可以这么写:
bool is_dict_obj = (your_py_object.get_type() == py::dict::type());
不过前者更贴合Python的类型检查习惯,而且如果后续遇到带继承关系的自定义类,isinstance也能正确识别子类实例,适用性更广。
内容的提问来源于stack exchange,提问作者Colin
相关产品推荐
相关产品推荐

