import sys from collections import MutableMapping class AttrDict(MutableMapping): """Dict-like object that can be accessed by attributes >>> obj = AttrDict() >>> obj['test'] = 'hi' >>> print obj.test hi >>> del obj.test >>> obj.test = 'bye' >>> print obj['test'] bye >>> print len(obj) 1 >>> obj.clear() >>> print len(obj) 0 """ def __init__(self, *args, **kwargs): self.__dict__.update(*args, **kwargs) def __getitem__(self, key): return self.__getattribute__(key) def __setitem__(self, key, val): self.__setattr__(key, val) def __delitem__(self, key): self.__delattr__(key) def __iter__(self): return iter(self.__dict__) def __len__(self): return len(self.__dict__) if __name__ == '__main__': import doctest doctest.testmod()