如何在boost python中检查None对象

时间:2018-05-16 11:50:23

标签: boost boost-python

我有一个搜索std::mapboost::python个对象元素的函数。如果对象存在于地图中,我需要搜索特定的键值并返回相应的boost :: python对象,否则我需要返回一个None对象。有没有办法让调用者代码识别函数返回的对象是否为None对象? 以下是搜索功能的代码:

namespace bpy = boost::pythono;
namespace fs = boost::filesystem;

std::map<fs::path, bpy::object> imported_modules;
bpy::object module_exists(fs::path path)
{
    auto it = imported_modules.find(path);
    if (it != imported_modules.end())
    {
        return it->second();
    }
    else
    {

        return bpy::object();// A None object
    }
}

以下是该函数的调用方式:

bpy::object mod_cached = module_exists(filepath);

if (!mod_cached.is_none())
  { 
    cout << "Module Found" << endl;
  }

但是,当我运行程序时出现以下错误:

  

TypeError:&#39; module&#39;对象不可调用

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

return it->second();更改为return it->second;解决了这个问题。