【Python】dataclasses 活用例

Python
この記事は約6分で読めます。

こんにちは、JS2IIUです。
Pythonでデータを管理しやすくするためにdataclassを定義します。dataclassを実現するdataclassesライブラリを実践で活用する事例を紹介します。今回もよろしくお願いします。

以前の記事もぜひご覧ください。

1. はじめに

dataclasses は Python でデータ管理を簡単に行うための便利な仕組みです。本記事では、実践的なサンプルプログラムを 3 つ紹介し、それぞれの 目的利点 を詳しく解説します。

この記事で学べること

  • dataclasses を実際の開発でどう活用できるか
  • dataclass を使うことで得られるメリット
  • 各サンプルのコード解説(ステップバイステップ)

それでは、さっそく見ていきましょう!

2. 設定管理クラスの作成

目的

アプリケーションの設定を dataclass で管理し、簡単にデフォルト値を設定・変更できるようにします。

サンプルコード

Python
from dataclasses import dataclass

@dataclass
class Config:
    debug: bool = False
    database_url: str = "sqlite:///default.db"
    max_connections: int = 10

# 設定インスタンスの作成
config = Config()
print(config)

# 設定変更
config.debug = True
print(config)

コードの解説

  1. @dataclass を使って Config クラスを定義。
  2. 各設定項目にデフォルト値を指定(debug=False など)。
  3. インスタンスを作成し、デフォルト設定を確認。
  4. 設定を変更し、変更が適用されることを確認。

メリット:

  • dataclass により簡潔なコードで設定を管理できる。
  • デフォルト値を指定できるため、コードの可読性が向上。

3. JSON との連携

目的

dataclasses を使って JSON データをやり取りしやすくする。

サンプルコード

Python
import json
from dataclasses import dataclass, asdict

@dataclass
class User:
    name: str
    age: int

# インスタンスを作成
user = User("Alice", 30)

# JSON に変換
user_json = json.dumps(asdict(user))
print(user_json)

# JSON から復元
user_dict = json.loads(user_json)
user_obj = User(**user_dict)
print(user_obj)

コードの解説

  1. @dataclassUser クラスを定義。
  2. asdict(user)dict に変換し、json.dumps() で JSON 形式に。
  3. JSON を json.loads()dict に戻す。
  4. User(**user_dict)User インスタンスに復元。

メリット:

  • dataclass + asdict() で簡単に JSON 変換。
  • dict に変換することで、JSON とのやり取りがスムーズに。

4. ロギングデータの管理

目的

ログデータを dataclasses で管理し、可読性を向上させる。

サンプルコード

Python
from dataclasses import dataclass, field
from datetime import datetime

@dataclass
class LogEntry:
    message: str
    level: str = "INFO"
    timestamp: datetime = field(default_factory=datetime.now)

# ログエントリの作成
log1 = LogEntry("System started")
log2 = LogEntry("User logged in", level="WARNING")

print(log1)
print(log2)

コードの解説

  1. @dataclassLogEntry クラスを定義。
  2. message(ログメッセージ)と level(ログレベル)を設定。
  3. timestampdefault_factory=datetime.now で現在時刻に。
  4. インスタンス作成時にデフォルトでタイムスタンプを設定。

メリット:

  • ログデータを統一フォーマットで管理。
  • default_factory で現在時刻を自動設定。

5. まとめ

  • dataclasses を使うと、データ管理がシンプルで可読性の高いコードが書ける。
  • 設定管理、JSON 連携、ログ管理など、さまざまな場面で活用可能。
  • default_factoryasdict() などの便利機能を活用すると、より柔軟に使える。

実践的な dataclasses の使い方を学び、あなたのプロジェクトでも活用してみてください!

最後に、書籍のPRです。
24年9月に出版された「ハイパーモダンPython-信頼性の高いワークフローを構築するモダンテクニック」、Claudio Jolowicz著、嶋田、鈴木訳。開発環境の構築、プロジェクトの管理、テストに関して実践的な内容でとても参考になる一冊です。ぜひ手に取ってみてください。

最後まで読んでいただきありがとうございます。

コメント

タイトルとURLをコピーしました