存在 Python 类型

Python type exists

本文关键字:类型 Python 存在      更新时间:2023-10-16

我必须使用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(...)

这在文档中进行了描述。