【发布时间】:2016-10-07 19:59:08
【问题描述】:
我正在使用 Boost Python 使 C++ 和 Python 一起运行,我有一个看起来像这样的代码,创建一个 python 对象的实例并调用它的一个成员函数。
bp::object myInstance;
// ... myInstance is initialized
bp::object fun = myInstance.attr("myfunction");
fun();
我想在调用它之前检查成员函数是否存在。如果它不存在,我不想打电话。
问题是:即使函数不存在,对myInstance.attr("myfunction") 的调用也是成功的。因此,测试该函数是否存在于我当前代码中的唯一方法是尝试调用它并捕获异常。
有什么方法可以在不涉及异常或调用函数的情况下检查函数是否存在?
【问题讨论】:
-
// ... myInstance is initialized在 C++ 中初始化一个 Python 对象是boost::python中文档记录最差的部分之一,在这里你忽略了它!
标签: python c++ boost boost-python