namedtuple
固定サイズの (不変の) 情報を生成するための優れたツールです。タプルと同様ですが、便利なように名前付き属性があります。
ただし、namedtuple
クラス ファクトリを正しく使用していません。props
はclassです。通常は次のように使用します。
Props = namedtuple('Props', 'color size wheels roof')
def myfunction():
props = Props(color="green", size="large", wheels=4, roof=True)
return props
これにより、props
不変 (エンドユーザーはnamedtuple._replace()
メソッドを使用して新しいインスタンスを生成できます) になり、インデックス化も可能になります。
このアプローチで問題が発生しなかった唯一の理由は、関数が実行されるたびに新しいクラス オブジェクトを作成したことです。インスタンスが作成されないため、設定したクラス属性はインスタンス間で共有されません。
不変オブジェクトが必要ない場合は、代わりに辞書を使用してください。
def myfunction():
return {
"color": "green",
"size": "large",
"wheels": 4,
"roof": True
}