On Mar 3, 4:25 am, [EMAIL PROTECTED] (Alex Martelli) wrote: > Hallvard B Furuseth <[EMAIL PROTECTED]> wrote: > > > Does this class need anything more? > > Is there any risk of a lookup loop? > > Seems to work... > > > class attrdict(dict): > > """Dict where d['foo'] also can be accessed as d.foo""" > > def __init__(self, *args, **kwargs): > > self.__dict__ = self > > dict.__init__(self, *args, **kwargs) > > def __repr__(self): > > return dict.__repr__(self).join(("attrdict(", ")")) > > The problem is mostly that, given an instance a of attrdict, whether you > can call (e.g.) a.update(foo) depends on whether you ever set > a['update'], making the whole program extremely fragile -- a very high > price to pay for some modest amount of syntax sugar. > > Alex
Then you will prefer something like this: class Namespace(object): def __init__(self, __ns={}, **kwargs): if kwargs: __ns.update(kwargs) self.__dict__ = __ns -- http://mail.python.org/mailman/listinfo/python-list