Python : 辞書(dict)をプロパティの様に参照したい
[ できるかな Python ] のコーナー ここでは 実用になるかはさておき 、Pythonで 出来たら楽しいって事をやってみる だけのコーナーです。 Pythonで辞書型を使ってる時に、ついつい、 Javascriptのように『.』で参照 しようとしてしまうってことあるよね。 ん?ない? まあ、そういう人もいるでしょう・・・ でも、 『 [ " " ] 』をタイプするのは面倒 なことってあるよね。 ん?ない? じゃあいいです。そういう人はキライです・・・ なので、私は、あるということで話を進めるのです。 何がしたいかというと・・・ member = { "name" : "あいうえ", "height" : 177 } みたいな辞書があった時に、 Javascriptなら・・・ Javascriptの場合 member["name"] member.name 上記のどちらでも参照できるってことですよ! Pythonは上の方しかできないんだよね〜 そこで、Pythonも『.』方式で値が取れたら、うれしいなぁと・・・ といっても、やることは簡単なのですが(笑) では早速、今回のレシピです。 <材料> 辞書型のオブジェクト 特殊メソッド__getattr__() 特殊メソッド__getitem__() <作り方のポイント> __getattr__()メソッドの利用 [ ]でのアクセスもできるように__getitem__()も利用 Pythonで頑張る from __future__ import annotations from typing import TypeVar, Generic T = TypeVar("T") class Prop(Generic[T]): def __init__(self, param: dict[str, T]) -> None: self.param = param def __getattr__(self, key: str) -> T: if isinstance(key, str): ...