D
Doug Morse
Hi,
My apologies for troubling for what is probably an easy question... it's just
that can't seem to find an answer to this anywhere (Googling, pydocs, etc.)...
I have a class method, MyClass.foo(), that takes keyword arguments. For
example, I can say:
x = MyClass()
x.foo(trials=32)
Works just fine.
What I need to be able to do is call foo() with a string value specifying the
keyword (or both the keyword and value would be fine), something along the
lines of:
x = MyClass()
y = 'trials=32'
x.foo(y) # doesn't work
or
x.MyClass()
y = 'trials'
x.foo(y = 32) # does the "wrong" thing
Surely there's some way to use a string's value as the key for making a method
call with a keyword argument?
Just for completeness, my goal is simply to read a bunch of key/value pairs
from an INI file (using ConfigObj) and then use those key/value pairs to set a
(3rd party) object's parameters, which must be done with a call along the
lines of "instance.set(key=value)". Obviously, I could create a huge if..elif
statement along the lines of "if y = 'trials': x.foo(trials=32); elif y =
'speed': x.foo(speed=12);" etc., but then the statement has to be maintained
every time a new parameter is added/changed etc. Plus, such a solution seems
to me grossly inelegant and un-Pythonic.
Thanks in advance for any and all assistance!
Doug
My apologies for troubling for what is probably an easy question... it's just
that can't seem to find an answer to this anywhere (Googling, pydocs, etc.)...
I have a class method, MyClass.foo(), that takes keyword arguments. For
example, I can say:
x = MyClass()
x.foo(trials=32)
Works just fine.
What I need to be able to do is call foo() with a string value specifying the
keyword (or both the keyword and value would be fine), something along the
lines of:
x = MyClass()
y = 'trials=32'
x.foo(y) # doesn't work
or
x.MyClass()
y = 'trials'
x.foo(y = 32) # does the "wrong" thing
Surely there's some way to use a string's value as the key for making a method
call with a keyword argument?
Just for completeness, my goal is simply to read a bunch of key/value pairs
from an INI file (using ConfigObj) and then use those key/value pairs to set a
(3rd party) object's parameters, which must be done with a call along the
lines of "instance.set(key=value)". Obviously, I could create a huge if..elif
statement along the lines of "if y = 'trials': x.foo(trials=32); elif y =
'speed': x.foo(speed=12);" etc., but then the statement has to be maintained
every time a new parameter is added/changed etc. Plus, such a solution seems
to me grossly inelegant and un-Pythonic.
Thanks in advance for any and all assistance!
Doug