存在 Python 类型
Python type exists
我必须使用boost python库检查python中是否存在传递的对象类型:
// bp = boost::python
bool TypeExists(const std::string &typeName)
{
bp::object ret = bp::exec(
(boost::format("'%1%' in globals()") % typeName).str().c_str()
);
return bp::extract<bool>(ret);
}
因此,在此代码中,我运行python表达式,如下所示:'TypeName' in globals()
。这应该返回布尔类型的对象。但提取始终返回 0。类型 100% 存在,因为TypeExists
调用后的下一行中我创建了这种类型的对象。怎么了?
问题是exec执行Python代码并返回执行结果(无论它执行还是有错误);你需要表达式计算的结果。
必须在此处使用 eval 来获取表达式计算结果。
bp::object ret = bp::eval(...)
这在文档中进行了描述。
相关文章:
- Boost.Python :C++模板类型匹配的嵌套命名空间
- 了解 Python 中的对象类型
- 更改 Python 切换的 C 函数的返回值类型
- Cython:如何从C级类型获取'actual Python type'(类型代码/dtype)
- 如何将 Python 对象转换为 Cython 扩展类型的 std::vector 并返回?
- 如何将 cv::mat 对象从 python 模块传递到 c++ 函数并返回返回的 cv::mat 类型为对象?
- 使用 python 绑定来检查 C++ 类型是否是规范方式的指针、引用等?
- 使用python预处理后,C++(opencv)中的垫子类型数据与image_to_array相同
- Python C API:如何检查对象是否是类型的实例
- Python C API-返回功能超载中的不同类型
- 如何在功能中更改Python字典中的类型
- Python ctypes,回调函数增强类型是C++参考
- pybind11:Python 到 C++ 数据类型转换不起作用
- 带有Boost Python的Wrap C 功能 - Numpy数组类型
- 使用 Python 的 ctypes 调用涉及自定义类型的函数
- Swig Python模板具有类型扣除功能
- Pascal类型二进制文件的C++和Python类似物
- 如何在Cython中将Python对象转换为C++类型
- Python 参数类型与C++签名不匹配
- Swig:如何类型映射c ++字符串常量和python字符串?