zc.mappingobject provides a wrapper for a mapping objects that provides both attribute and item access.
>>> import zc.mappingobject
>>> mapping = dict(a=1)
>>> ob = zc.mappingobject.mappingobject(mapping)
>>> ob.a
1
>>> ob.a = 2
>>> ob.a
2
>>> mapping
{'a': 2}
>>> list(ob)
['a']
>>> len(ob)
1
>>> ob['a'] = 3
>>> ob.a
3
>>> mapping
{'a': 3}
>>> del ob.a
>>> mapping
{}
>>> ob.a
Traceback (most recent call last):
...
AttributeError: a
>>> ob.b = 1
>>> mapping
{'b': 1}
>>> del ob['b']
>>> mapping
|