[Tutor] Dynamic Function Calls
Alan Gauld
alan.gauld at btinternet.com
Fri Aug 14 01:50:18 CEST 2009
"Megan Land" <mland at us.ibm.com> wrote
> I'm trying to call a function from a dictionary. I did some googling and
> from what I can tell my code should work, but doesn't. Here's an
> example:
>
> def myFunc(self, inputList):
The fact you have a self in there suggests that this is a method
of some class? Is it? If not remove the self.
> dict={0: func0, 1: func1, 2:func2}
What do you think this is doing? What are func0, func1 etc?
Where are they defined?
> for element in inputList:
> dict[element]()
This will work provided element exists in dict and dict[element]
is a callable object, eg a function. But I recommend putting
some error handling in for the cases where either of those
two conditions is not true
> When I go to run this I get an error saying func0 is not defined. Does
> anyone have any ideas as to why this won't work?
Because you haven't defined func0!
try adding
def func0(): print 'func0'
def func1(): print 'func1'
def func2(): print 'func2'
above your function.
Then it might work if you call you function like this:
myFunc([func2,func0,func1])
HTH,
--
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/
More information about the Tutor
mailing list