Re: Automatic binding of **kwargs to variables



On Sat, 29 Oct 2005 11:01:02 -0700, chris.atlee@xxxxxxxxx wrote:

> Mike Meyer wrote:
> [snip]
>> for name, value in kwargs.items():
>> if name in ('a', 'list', 'of', 'valid', 'keywords'):
>> exec "%s = %s" % (name, value)
>> else:
>> raise ValueError, "Unrecognized keyword " + name
>>
>> Others will probably tell you that you really shouldn't be using exec.
>
> What about using setattr?
>
> for name, value in kwargs.items():
> if name in ('a', 'list', 'of', 'valid', 'keywords'):
> setattr(self, name, value)
> else:
> raise ValueError, "Unrecognized keyword " + name
>
> I'd probably turn the list of valid keywords into another dictionary to
> make it easy to specify default values for all the parameters as well.

Here's a thought... instead of passing a class instance which you access
with obj.name, why not pass a dict which you access with dict[name]?

I don't understand the purpose of doing all this extra work to stuff
values stored in a dictionary into instance attributes, when it is so easy
to just use the dictionary. What advantage do you get?



--
Steven.

.