cattrs: 柔軟なオブジェクトのシリアライズとバリデーション¶
なぜなら、 バリデーションはエッジに属するから。
cattrs は、 Python でのデータの (非) 構造化と検証のためのスイス ・ アーミー ・ ナイフです。 実際には、 構造化されていない辞書 を 適切なクラス に変換し、 その内容を 検証 します。
cattrs は、 attrs クラスや dataclasses との相性が抜群です。 シンプルな (非) 構造化は、 ネストされたデータであっても、 シリアライズの詳細でデータ ・ モデルを汚染することなく、 すぐに利用できます:
>>> from attrs import define
>>> from cattrs import structure, unstructure
>>> @define
... class C:
... a: int
... b: list[str]
>>> instance = structure({'a': 1, 'b': ['x', 'y']}, C)
>>> instance
C(a=1, b=['x', 'y'])
>>> unstructure(instance)
{'a': 1, 'b': ['x', 'y']}
しかし、 cattrs は、 関数型合成 に焦点を当て、 データ ・ モデルをシリアライズおよびバリデーション ・ ルールに 結合させない ことで、 はるかに 多くのことを行います。
cattrs を使用する理由の詳細については、 cattrs が必要な理由 を参照してください。 納得したら、 基本 にすぐに飛び込みましょう!