We probably want to use the standard python-bunch instead.  There are quite a few corner cases that this ignores.  For instance:

>>> a = AttributeDict()
>>> a.python = 1
>>> a.keys()
[]

(python was set as a new attribute on a instead of being added as an entry into the dict)