argparseのNamespaceオブジェクト
parse_args() が属性を格納して返すためのオブジェクトにデフォルトで使用されるシンプルなクラスです。
パーサのparse_argsメソッド呼び出しで返る型
このクラスはシンプルに設計されており、単に読みやすい文字列表現を持った object のサブクラスです。
実装を見ると、ベースクラスの_AttributeHolderで「読みやすい文字列表現」が実装されている
Abstract base class that provides __repr__.
もし属性を辞書のように扱える方が良ければ、標準的な Python のイディオム vars() を利用できます:
vars(args)で{'foo': 'BAR'}のような辞書になる
varsで辞書にすれば**で展開して引数として渡せる!
#kfp で生成したコードにargparseをvarsと使っていることに気づいた 実装でも使っている
__eq__の実装はvars(self) == vars(other)
テストのアサーションとしては、以下2点でもいいのかも
Namespaceオブジェクトである
varsで辞書を返させて、辞書の一致の検証
これだと要素の不一致もわかりやすいのでは?(未検証)
既存のオブジェクトに属性を設定する方が良い場合
namespace= キーワード引数を指定する
Namespaceどうしは__eq__で比較できる実装
テストのアサーションはNamespaceオブジェクトどうしの比較でも書けそう
code:NSオブジェクトの続き.py
>> args
Namespace(string='spam', number=42)
>> from argparse import Namespace
>> args == Namespace(number=42, string="spam")
True
ドキュメントから記載が消えたっぽい
デフォルトでは、 parse_args() は Namespace の新しいオブジェクトに必要な属性を設定して返します。