I\'ve started to use constructs like these:
class DictObj(object): def __init__(self): self.d = {} def __getattr__(self, m): return s
Don't overlook Bunch.
It is a child of dictionary and can import YAML or JSON, or convert any existing dictionary to a Bunch and vice-versa. Once "bunchify"'d, a dictionary gains dot notations without losing any other dictionary methods.