object attributes from a dictionary

John Lenton jlenton at gmail.com
Wed Jul 14 17:00:49 CEST 2004


On Wed, 14 Jul 2004 10:51:28 -0400, Darren Dale <dd55 at cornell.edu> wrote:
> John Lenton wrote:
> > On Tue, 13 Jul 2004 18:24:49 -0400, Darren Dale <dd55 at cornell.edu> wrote:
> >
> >>Is there a more direct way than this to turn a dictionary into an object?
> >>
> >>class pupa:
> >>     def __init__(self,initDict,*args,**kwargs):
> >>         [setattr(self,key,initDict[key]) for key in initDict.keys()]
> >>
> >>larva={'a':1,'b':2}
> >>moth=pupa(larva)
> >>
> >>(ok, so I'm dorking a bit here. I havent slept in two days.)
> >
> >
> >     class pupa(dict):
> >         def __getattr__(self, attr):
> >             return self[attr]
> >         def __setattr__(self, attr, val):
> >             self[attr] = val
> >
> 
> Maybe I'm missing a step, but this doesnt work.

works here :)

Python 2.3.4 (#2, Jul  5 2004, 09:15:05)
[GCC 3.3.4 (Debian 1:3.3.4-2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> class pupa(dict):
...    def __getattr__(self, attr):
...        return self[attr]
...    def __setattr__(self, attr, val):
...        self[attr] = val
...
>>> larva={'a':1,'b':2}
>>> moth=pupa(larva)
>>> moth.a
1
>>> moth.b
2

unless you mean something else by "this doesn't work"

-- 
John Lenton (jlenton at gmail.com) -- Random fortune:
bash: fortune: command not found



More information about the Python-list mailing list