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 が必要な理由 を参照してください。 納得したら、 基本 にすぐに飛び込みましょう!