並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 20 件 / 20件

新着順 人気順

dataclassesの検索結果1 - 20 件 / 20件

  • [詳解] Pythonのdataclasses

    dataclassesとは pythonのdataclassesモジュールは、データを格納するためのクラスを定義し、データ格納クラスのための様々な機能を含んだモジュールです。 データ格納のための、と言うとふんわりした印象になりますが、クラス変数を初期化するための__init__()関数を自動生成してくれるため、クラスの定義がシンプルになります。またデータ格納を目的とするクラスの場合__init__()に大量の引数を記載する必要がありますが、自動生成されることによりその必要も無くなります。 データ格納といった目的以外にも様々な用途に用いることが考えられると思います。 dataclassesはPython3.7から追加になりました。本記事はPython3.9のドキュメント、ソースコードを参照して執筆しています。 基本的な使い方 dataclassesモジュールを用いたデータ格納クラスを作成する

      [詳解] Pythonのdataclasses
    • namedtuple in a post-dataclasses world

      namedtuple has been around since forever,1 and over time, its convenience saw it used far outside its originally intended purpose. With dataclasses now covering part of those use cases, what should one use named tuples for? In this article, we take a look at exactly that, with a few examples from real code. Contents What are named tuples used for? The problems with named tuples What are named tupl

      • 【Python】冗長な__init__()定義を超単純にするdataclassesライブラリ

        Pythonのコンストラクタの面倒 / 冗長 なコードを短くかけるdataclassesライブラリの紹介。 Pythonでクラスを定義するとき、以下のようなコードを書くことが多い class Hoge: def __init__(self, attr1: int, attr2: float) -> None: self.attr1 = attr1 self.attr2 = attr2 コンストラクタattr1とattr2を引数に取り,そいつらを同名のアトリビュートに代入する。 これだけの操作なのに,同じ変数名を3回も書かなきゃいけないのがずっと面倒だった。 dataclassesを見つけるまでは。 dataclasses 公式ドキュメント dataclassesはPythonの標準ライブラリであり、dataclassというデコレータを提供する。 このデコレータをクラス定義の前につけると、3

          【Python】冗長な__init__()定義を超単純にするdataclassesライブラリ
        • Dataclasses - Pydantic

          Get Started Concepts API Documentation Internals Examples Error Messages Integrations Blog Pydantic People

            Dataclasses - Pydantic
          • Why can't dataclasses have mutable defaults in their class attributes declaration?

            This seems like something that is likely to have been asked before, but an hour or so of searching has yielded no results. Passing default list argument to dataclasses looked promising, but it's not quite what I'm looking for. Here's the problem: when one tries to assign a mutable value to a class attribute, there's an error: @dataclass class Foo: bar: list = [] # ValueError: mutable default <clas

              Why can't dataclasses have mutable defaults in their class attributes declaration?
            • Attrs と Dataclasses と Pydantic の使いわけを調べてみた

              FastAPIを用いた開発を最近始めましたが、PythonでDDDでいうValueObjectなどを定義するときに人によってDataclassesのdataclassであったりpydantic.dataclassesのdataclassやBaseModelを使っているのを目にしました。 ここで、自分の開発では何が一番適切なのかが不明確だったので調べることにしました。 具体的なそれぞれのライブラリの説明は割愛しますが各ドキュメントのURLは以下の通りです。 Attrs Dataclasses Pydantic 結論 前提として筆者はFastAPIを用いた開発をしていますが、基本的に以下のような形で決まるのではと思います。 __slots__を使ったクラス定義をしたい(速度を意識したい) → Attrs __slots__を使う予定がないかつ標準ライブラリを使いたい → Dataclasses

                Attrs と Dataclasses と Pydantic の使いわけを調べてみた
              • Python の Dataclasses に関する詳細な解説 (パート1/2)|Hafnium

                Python 3.7で導入された`dataclasses`は、データを格納するクラスの定義を簡素化し、`init`や`repr`などの特殊メソッドを自動的に生成するデコレータである。 従来のクラス定義と比べ、等値比較、ハッシュ可能性、不変性、順序付けなどの機能を簡単に実装でき、ボイラープレートコードを大幅に削減できる。 `attrs`ライブラリに着想を得て開発されたこの機能は、標準ライブラリの一部として組み込まれており、コードをより清潔にしてエラーを起こしにくくする効果がある。 はじめにPython 3.7で導入された `dataclasses` モジュールは、ユーザー定義クラスに生成された特殊メソッドを自動的に追加するためのデコレータと関数を提供している。主にデータを格納するためのクラスに対して、繰り返しの多いボイラープレートコードを書いていた経験があるなら、`dataclasses`

                  Python の Dataclasses に関する詳細な解説 (パート1/2)|Hafnium
                • [dataclasses-json] Dict型のプロパティに文字列を設定しようとすると、"TypeError: Type List cannot be instantiated; use list() instead"が発生した - Qiita

                  環境 Python3.10.2 dataclasses-json 0.5.7 何が起きた? dataclasses-jsonのfrom_dict関数で、Dict型のプロパティに文字列を設定しようとすると、当たり前ですがエラーが発生します。 from dataclasses import dataclass from dataclasses_json import dataclass_json from typing import List, Dict, Any @dataclass_json @dataclass class Person: name: str type: Dict[str, Any] """型が間違っている。正しくは`str`型""" @dataclass_json @dataclass class School: name: str people: List[Perso

                    [dataclasses-json] Dict型のプロパティに文字列を設定しようとすると、"TypeError: Type List cannot be instantiated; use list() instead"が発生した - Qiita
                  • dataclasses-json:オプショナルなプロパティの型を`None | str`にして`schema().load`を実行したらwarningが発生した。 - Qiita

                    from dataclasses import dataclass from dataclasses_json import DataClassJsonMixin @dataclass(frozen=True) class Project(DataClassJsonMixin): project_id: str project_name: None | str = None print("Use `Project.from_dict()`") print(Project.from_dict({"project_id": "1"})) print("Use `Project.schema().load()`") print(Project.schema().load([{"project_id": "2"}], many=True)) $ python sample1.py Use `Pro

                      dataclasses-json:オプショナルなプロパティの型を`None | str`にして`schema().load`を実行したらwarningが発生した。 - Qiita
                    • Python の Dataclasses に関する詳細な解説 (パート2/2)|Hafnium

                      データクラスの`post_init`メソッドと`InitVar`を使用することで、初期化時の柔軟な制御と追加処理が可能である。 `field()`関数を活用することで、個々のフィールドの比較、ハッシュ、表示などの振る舞いを細かくカスタマイズできる。 `default_factory`や`make_dataclass`などの機能により、可変なデフォルト値の安全な処理や動的なクラス生成が実現できる。 はじめにPythonの`dataclasses`モジュールの深層解説へ再び戻ってきた。パート1では、`dataclasses`の基本を探求し、`init`、`repr`、`eq`などの特殊メソッドを自動生成することでクラス定義をいかに簡素化できるかを説明した。また、等価性の比較、ハッシュ可能性、不変性、順序付けについても議論した。 このパート2では、`dataclasses`によって生成されるコー

                        Python の Dataclasses に関する詳細な解説 (パート2/2)|Hafnium
                      • dataclasses-json:`DataClassJsonMixin`を継承しているデータクラスで`undefined`や`letter_case`を設定する場合は、`dataclass_json_config`クラス変数を設定する - Qiita

                        Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

                          dataclasses-json:`DataClassJsonMixin`を継承しているデータクラスで`undefined`や`letter_case`を設定する場合は、`dataclass_json_config`クラス変数を設定する - Qiita
                        • Pythonでdataclasses-jsonを用いてJSONシリアライズおよびデシリアライズを行う

                          Pythonでdataclasses-jsonを用いてJSONシリアライズおよびデシリアライズを行ってみます。 今回はdataclasses-jsonを用います。このライブラリ・モジュールはPythonの標準ライブラリではありませんので、事前にインストールする必要があります。 ■Python 今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows11) ■dataclasses-jsonを用いてJSONシリアライズおよびデシリアライズを行うでは、早速dataclasses-jsonを用いてJSONシリアライズおよびデシリアライズを行うスクリプトを書いていきます。 ■コードimport json from dataclasses import dataclass from dataclasses_json import dataclass_json @datacl

                            Pythonでdataclasses-jsonを用いてJSONシリアライズおよびデシリアライズを行う
                          • Pythonのdataclasses.dataclassを使う - 偏った言語信者の垂れ流し

                            Pythonのdataclasses.dataclassは普段からたまに使っていますが、良く使っている書き方を人に紹介するためにメモを残します。 dataclasses - データクラス - Python 3.12.2 ドキュメント dictと相互変換するクラス オブジェクトとdictで相互変換するクラスをdataclassで書くことがあります。 asdict 関数が便利です。リストで保持したいメンバー変数は、 field 関数を使って定義すれば、asdictでそのまま対象にできます。 また from_dict メソッドは厳密に実装するなら引数のチェックなどをしてもよいですが、可変長のキーワード引数としてそのままコンストラクタに渡すように書けば、実装はシンプルです。 コード main.py: from dacite import from_dict from dataclasses imp

                              Pythonのdataclasses.dataclassを使う - 偏った言語信者の垂れ流し
                            • JSONとの間でデータクラスを簡単にシリアル化できる「dataclasses-json」のインストール

                              JSONとの間でデータクラスを簡単にシリアル化できる「dataclasses-json」のインストールについて解説しています。 「dataclasses-json(https://github.com/lidatong/dataclasses-json,https://github.com/lidatong/dataclasses-json)」は、JSONとの間でデータクラスをエンコードおよびデコードすることができるライブラリです。 ■Python 今回のPythonのバージョンは、「3.7.9」を使用しています。(Windows10)(pythonランチャーでの確認) ■dataclasses-jsonをインストールするdataclasses-jsonをインストールを行いますが、今回はpipを経由してインストールを行うので、まずWindowsのコマンドプロンプトを起動します。 pip i

                                JSONとの間でデータクラスを簡単にシリアル化できる「dataclasses-json」のインストール
                              • dataclasses-json:`DataClassJsonMixin`を継承してデータクラスを定義すれば、mypyに怒られない - Qiita

                                環境 Python 3.11.2 dataclasses-json 0.5.7 mypy 1.3.0 本題 @dataclass_jsonでデータクラスを定義して、dataclass_jsonが用意したfrom_dict関数などを呼び出すと、「そんな属性はない」とmypyに怒られます。 from dataclasses_json import dataclass_json, DataClassJsonMixin from dataclasses import dataclass @dataclass_json @dataclass class Task: value: int Task.from_dict({"value": 1})

                                  dataclasses-json:`DataClassJsonMixin`を継承してデータクラスを定義すれば、mypyに怒られない - Qiita
                                • dataclasses-json:`from __future__ import annotations`が有効な状態で`schema().load()`を実行するとwarningが発生する - Qiita

                                  Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

                                    dataclasses-json:`from __future__ import annotations`が有効な状態で`schema().load()`を実行するとwarningが発生する - Qiita
                                  • dataclasses-json:データクラスのフィールドの型に`list`などを使うと、`TypeError: 'type' object is not subscriptable`エラーが発生する - Qiita

                                    from __future__ import annotations from dataclasses import dataclass from dataclasses_json import dataclass_json @dataclass_json @dataclass class Person: name: str club: list[str] d = {"name": "Alice", "club": ["tennis", "soccer"]} person = Person.from_dict(d) print(person) $ python foo.py Traceback (most recent call last): File "foo2.py", line 14, in <module> person = Person.from_dict(d) File "/h

                                      dataclasses-json:データクラスのフィールドの型に`list`などを使うと、`TypeError: 'type' object is not subscriptable`エラーが発生する - Qiita
                                    • dataclasses-json:`from __future__ import annotations`がある状態で`.schema().dump()`を実行すると、UserWarningが発生する - Qiita

                                      Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

                                        dataclasses-json:`from __future__ import annotations`がある状態で`.schema().dump()`を実行すると、UserWarningが発生する - Qiita
                                      • Pythonでarrowとdataclasses-jsonを用いて現在の日時を取得しJSON形式に変換する

                                        Pythonでarrowとdataclasses-jsonを用いて現在の日時を取得しJSON形式に変換してみます。 今回はarrowとdataclasses-jsonを用います。このライブラリ・モジュールはPythonの標準ライブラリではありませんので、事前にインストールする必要があります。 ■Python 今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows11) ■arrowとdataclasses-jsonを用いて現在の日時を取得しJSON形式に変換するでは、早速arrowとdataclasses-jsonを用いて現在の日時を取得しJSON形式に変換(シリアライズ)するスクリプトを書いていきます。 ■コードimport arrow from dataclasses import dataclass from dataclasses_json import

                                          Pythonでarrowとdataclasses-jsonを用いて現在の日時を取得しJSON形式に変換する
                                        • mysql5.7でjson用カラムをdataclassesで形式を固定する - Qiita

                                          背景 mysql5.7 DBにjson形式でデータを保存する backendだけで処理じゃなくて、aws lambdaも処理するので、保存されるjsonの形式を管理したい 対策 dataclassesでjson形式を固定する dataclasses-jsonよりコンバートする request -> dict -> dataclass -> json -> DB DB -> json -> dataclass -> dict -> response dataclasses-json紹介 https://pypi.org/project/dataclasses-json/ Pythonのdataclassをdictやjsonと相互に変換する方法を解説! 対応 dataclasses from dataclasses import dataclass from dataclasses_json

                                            mysql5.7でjson用カラムをdataclassesで形式を固定する - Qiita
                                          1