2016-08-22 28 views
0

省略可能な引数のデフォルトとしてNoneを使用するのはPythonです。例えば、文字列引数のデフォルトとしてNoneを使用:文字列またはNoneBoost Python関数の文字列引数またはNone引数の両方を受け入れる方法

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

したがってf()は、引数str_argための2つのタイプを受け入れます。

ここでは、Boost Pythonを使用してこの関数をC++で実装しています。 Boost Pythonでstring型とNone型の両方を引数として受け入れる方法を教えてください。

答えて

1

boost::python::objectを受け入れる機能はありますか?次に、を呼び出して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_Noneまたはarg.is_none()

+0

ありがとうございました!私はまだそれを試していないが、あなたの提案は確かにしっかりしています。 –

関連する問題