On Mar 3, 1:29 pm, [EMAIL PROTECTED] (Alex Martelli) wrote: > It would be nice, yes, weren't it for the inevitable irregularity, one > way or another, caused by the clash between attributes and items.
In thinking about it, I think this might fall under 'we're all consenting adults here'. I mean, you can shadow the dict constructor from the toplevel if you're so inclined (or don't know any better). But you could make it harder to accidentally shadow builtin attributes: from warnings import warn class attrdict(dict): __builtins__ = dir(dict) def __init__(self, *args, **kwargs): dict.__init__(self, *args, **kwargs) for k, v in self.items(): dict.__setattr__(self, str(k), v) def __setitem__(self, k, v): if k in self.__builtins__: warn('shadowing builtin attribute: %s' % k, RuntimeWarning, 2) dict.__setitem__(self, k, v) dict.__setattr__(self, str(k), v) __setattr__ = __setitem__ a = attrdict([(1,2)], a=3, b=4) a.update = 'test' Regards, Jordan -- http://mail.python.org/mailman/listinfo/python-list