pre-PEP generic objects

Nick Craig-Wood nick at craig-wood.com
Thu Dec 2 04:30:02 EST 2004


Scott David Daniels <Scott.Daniels at Acm.Org> wrote:
>  Nick Craig-Wood wrote:
> > class Hash:
> >     def __init__(self, **kwargs):
> >         for key,value in kwargs.items():
> >             setattr(self, key, value)
> >     def __getitem__(self, x):
> >         return getattr(self, x)
> >     def __setitem__(self, x, y):
> >         setattr(self, x, y)
> 
>  You can simplify this:
>  class Hash(object):
>       def __init__(self, **kwargs):
>           for key,value in kwargs.items():
>               setattr(self, key, value)
>       __getitem__ = getattr
>       __setitem__ = setattr

That doesn't work unfortunately...

>>> class Hash(object):
...     def __init__(self, **kwargs):
...         for key,value in kwargs.items():
...             setattr(self, key, value)
...     __getitem__ = getattr
...     __setitem__ = setattr
... 
>>> h=Hash(a=1,b=2)
>>> h.a
1
>>> h['a']
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: getattr expected at least 2 arguments, got 1
>>>

I'm not exactly sure why though!
-- 
Nick Craig-Wood <nick at craig-wood.com> -- http://www.craig-wood.com/nick



More information about the Python-list mailing list