Steve Holden wrote: >> here's a rather horrid piece of code that turns a list of dictionaries >> into a single object [that] automatically searches the dictionary chain >> when you ask for attributes (use getattr for non-standard keys). >> >> def flatten_dicts(*dicts): >> root = None >> for dict in dicts: >> class wrapper: pass >> if root: >> wrapper.__bases__ = (root,) >> wrapper.__dict__ = dict >> root = wrapper >> return wrapper() >> >> obj = flatten_dicts(d1, d2, d3) >> > Iterative subclassing, yet. Yerch :-) It's sometimes amazing just how down > and dirty Python will > let you get.
you can have a lot more fun with "class" than with "def"... > Of course, if the mappings were all dictionaries then it would be rather > simpler to just update an > empty dict with the outermost through to the innermost scopes. except that if you do that, changes to the individual dictionaries won't be visible in the "flattened" view. </F> -- http://mail.python.org/mailman/listinfo/python-list