PythonでResult型

PythonでResult型を使うために、result==0.17.0を使ってみたのですが、ドキュメントのmypy関連の記述が嘘なのでメモ。

type guard functionsは機能しません。is_err, is_okではなく、isinstanceを使いましょう。

from result import Result, Ok, Err, is_err


def fun(arg: Result[int, str]) -> int:
    # 以下を if is_err(arg): にすると
    if isinstance(arg, Err):
        res = arg.err_value
        ret = len(res)
        return ret
    # ここで arg の型は Result[int, str] のまま
    ret = arg.ok_value
    return ret

コメント

タイトルとURLをコピーしました