class attrdict

Alex Martelli aleax at mac.com
Fri Mar 2 22:25:13 EST 2007


Hallvard B Furuseth <h.b.furuseth at usit.uio.no> 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



More information about the Python-list mailing list