Automatic binding of **kwargs to variables
steve at REMOVETHIScyber.com.au
Sun Oct 30 13:31:53 CET 2005
On Sat, 29 Oct 2005 11:01:02 -0700, chris.atlee at gmail.com wrote:
> Mike Meyer wrote:
>> for name, value in kwargs.items():
>> if name in ('a', 'list', 'of', 'valid', 'keywords'):
>> exec "%s = %s" % (name, value)
>> 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)
> 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?
More information about the Python-list