如何接受Boost Python函数的字符串或None参数



使用None作为可选参数的默认值是python的。例如,使用None作为字符串参数的默认值:

def f(str_arg=None):
    if str_arg is None:
        str_arg = get_str_arg_default()
    ...

因此f()接受参数str_arg的两种类型:字符串或None

现在,我们使用Boost Python在c++中实现这个函数。我如何使Boost Python接受字符串和None类型的参数?

你能让函数接受boost::python::object吗?然后你可以通过调用is_none()来检查它是否为None

请参阅https://wiki.python.org/moin/boost.python/FAQ#How_can_I_check_returning_Python_value_for_None.3F,其中给出了检查对象是否为None的几个建议-例如arg.ptr() == object().ptr(), arg.ptr() == Py_Nonearg.is_none()

最新更新