Fredrik Lundh wrote:
Iterative subclassing, yet. Yerch :-) It's sometimes amazing just how down and dirty Python will let you get.Jerry Sievers wrote:
It gets uglier though if you want to do this from inside a function and have variables from more than one scope interpolated. For that you need something that can treat a series of dicts as one.If there's built in functionality in Python for this, I haven't discovered it yet.
you use them all the time: plain old instance objects...
here's a rather horrid piece of code that turns a list of dictionaries into a single object the 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)
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.
though-efficiency-would-be-determined-by-usage-ly y'rs - steve -- Steve Holden http://www.holdenweb.com/ Python Web Programming http://pydish.holdenweb.com/ Holden Web LLC +1 703 861 4237 +1 800 494 3119 -- http://mail.python.org/mailman/listinfo/python-list