PythonのAttrDict: 辞書の属性アクセス
本記事では、Pythonでよく使われるデータ構造の一つである辞書(Dictionary)を、AttrDict
クラスを使用することで属性アクセスを可能にする解説をします。AttrDict
は辞書を拡張し、属性アクセスを提供することで、コードの可読性や使いやすさを向上させるための便利なツールです。(ライブラリもありますが、わかりやすくクラスを実装します。
AttrDictのメリット
属性アクセスの利便性:
AttrDict
を使用すると、辞書のようにキーを使って値にアクセスするだけでなく、ドット演算子を使って属性としてもアクセスできます。これにより、コードが簡潔で読みやすくなります。コードの可読性向上: 属性アクセスにより、コード内での変数や設定の使用がより直感的になります。これにより、コードが他の人にとっても理解しやすくなります。
補完とドキュメンテーションのサポート: IDEが属性アクセスをサポートするため、補完やドキュメンテーションがより効果的に利用できます。これは開発プロセスを効率化します。
使い方
class AttrDict: """ 辞書を受け取り、属性アクセス可能なオブジェクトに変換するクラスです。 """ def __init__(self, dictionary: dict): for key, value in dictionary.items(): setattr(self, key, value) # 使用例 my_dict = {'name': 'John', 'age': 30, 'city': 'Tokyo'} my_attr_dict = AttrDict(my_dict) # 辞書と同様にキーでアクセス print(my_dict['name']) # 出力: John # 属性アクセスが可能 print(my_attr_dict.name) # 出力: John print(my_attr_dict.age) # 出力: 30 print(my_attr_dict.city) # 出力: Tokyo
jsonファイル読み込みへの利用
from typing import Any, Dict import json def get_config(file_path: str) -> Any: """ 指定されたファイルパスから設定を読み込み、JSONの辞書変数をオブジェクト変数に変換する関数です。 Parameters: - file_path (str): 設定ファイルのパス。 Returns: - Any: 設定を含むオブジェクト変数。 """ # 設定ファイルのパスを指定 config_file: str = file_path # "./weights/bert_config.json" # ファイルを開いてJSONとして読み込む with open(config_file, 'r') as json_file: json_object: Dict[str, Any] = json.load(json_file) # 辞書変数をオブジェクト変数に変換 config: Any = AttrDict(json_object) return config