続:typoを素早く察知する方法 [Main] Pythonで関数名を安全に変更する

続:typoを素早く察知する方法[Python(18)]Pythonで関数名を安全に変更する

Pythonの辞書をドットでアクセス

Pythonの「辞書」はとても便利なデータ構造ですが、「x」というキーに関連づけられている値を取り出すのには「['x']」とキー以外に4文字も書かなければ行けなくて面倒です。
>>> p = dict(x=1, y=2)
>>> p
{'y': 2, 'x': 1}
>>> p['x']
1
JavaScriptみたいにp.xでアクセスできると便利です。 そこでp.xでアクセスできるようにする関数を作りました。
>>> p = modulize(p)
>>> p.x
1
実装はこちら:
>>> def modulize(dictionary):
	import imp
	m = imp.new_module("")
	m.__dict__.update(dictionary)
	return m
なお、modulizeの時点で辞書がコピーされているので、modulize済みのオブジェクトのメンバを書き換えても元の辞書は変化しません。
>>> p = dict(x=1, y=2)
>>> p2 = modulize(p)
>>> p2.x = 100
>>> p
{'y': 2, 'x': 1}
変更済みの辞書を取得するには下のように__dict__を使います…ってモジュールにしたせいで__doc__とかが勝手に追加されていますね…
>>> p2.__dict__
{'y': 2, '__name__': '', '__doc__': None, 'x': 100}
…すなおに下のように書いた方がいいかも。
>>> class MyDict(dict):
	__getattr__ = dict.__getitem__
	__setattr__ = dict.__setitem__
	__delattr__ = dict.__delitem__

	
>>> MyDict()
{}
>>> d = _
>>> d.x = 1
>>> d
{'x': 1}
>>> d.x
1
>>> del d.x
>>> d
{}