I find it more convenient to access dict keys as obj.foo instead of obj[\'foo\'], so I wrote this snippet:
obj.foo
obj[\'foo\']
class AttributeDict(dict
Here's a short example of immutable records using built-in collections.namedtuple:
def record(name, d): return namedtuple(name, d.keys())(**d)
and a usage example:
rec = record('Model', { 'train_op': train_op, 'loss': loss, }) print rec.loss(..)