dynamic call of a function

Luigi Ballabio ballabio at mac.com
Fri Oct 19 12:30:01 CEST 2001


At 10:37 AM 10/19/01 +0200, anthony harel wrote:
>Is it possible to make dynamic call of a function whith python ?
>
>I have got a string that contains the name of the function I
>want to call but I don't want to do something like this :
>
>if ch == "foo" :
>     self.foo( )
>elif ch == "bar"
>     self.bar( )
>....

Anthony,
         here are two ways to do it---I don't know which is the best, nor 
whether the best is yet another. Also, you might want to put in some error 
checking.

class Test:
     def foo(self):
         print 'Norm!'
     def bar(self):
         print 'Dum-de-dum'
     def dynCall1(self,methodName):
         eval('self.%s()' % methodName)
     def dynCall2(self,methodName):
         method = vars(self.__class__)[methodName]
         method(self)

 >>> t = Test()
 >>> t.dynCall1('foo')
Norm!
 >>> t.dynCall2('bar')
Dum-de-dum

Bye,
         Luigi





More information about the Python-list mailing list