#やりたいこと
タイトルが正しくやりたいことを表現できてるのかいまいちわかりませんが、要はこういうことをやりたいなと思うことがたまにあります。JSを書いた後とかは特に。。
d = dict(a=1, b=2)
# ふつうこんな感じで使う
d["c"] = d["a"] + d["b"]
# こんな感じがいいんだけどなぁ
d.c = d.a + d.b
#こたえ
辞書をちょっと拡張して、__setattr__
を__setitem__
にマッピングすればいいのですね(getもしかり)。ハッピー!
#おまけ
属性になることで、IPython上で補完が効くようになります。例えば、requestsモジュールを使っているとして、「いまのレスポンスヘッダの中身が見たい!」ってときに、タブだけで候補がずらっと出てくれるようになります。
import requests
from sklearn.datasets.base import Bunch as dict
# GitHub APIを叩いてみる
response = requests.get("https://api.github.com")
headers = dict(**response.headers)
この状態でheader.<TAB>
とすると・・・
こうなりますので、いちいちheaders["X-RateLimit-Remaining"]
などと打つのに比べてストローク数はだいぶ減らせますね。ウェーイ!!からの・・
お・・おお・・・