属性アクセスやタイプチェックを可能にするpythonのdictラッパー

https://github.com/dorkitude/dstruct

Pythonのdictで一々、d['foo']=42とかやるのは面倒。d.foo=42としたい。そういうときにNorvig先生のStructを使う。


class Struct:
def __init__(self, **entries): self.__dict__.update(entries)
http://norvig.com/python-iaq.html

dstructはそれにスキーマサポートを追加したようなもの。Djangoのモデルのようにサブクラスしてフィールド定義するとタイプチェックなどしてくれる。


class MapLocation(DStruct):
latitude = DStruct.RequiredAttribute(float)
longitude = DStruct.RequiredAttribute(float)

MapLocation(latitude=1.5) # longitudeが無いのでボカン
MapLocation(latitude=1.5 longitude='hoge') # longitudeがfloatじゃないのでボカン