dynamic call of a function
Ignacio Vazquez-Abrams
ignacio at openservices.net
Fri Oct 19 05:21:00 EDT 2001
On Fri, 19 Oct 2001, Luigi Ballabio wrote:
> 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
Actually, there's another way: getattr(obj, 'func')(...).
--
Ignacio Vazquez-Abrams <ignacio at openservices.net>
"As far as I can tell / It doesn't matter who you are /
If you can believe there's something worth fighting for."
- "Parade", Garbage
More information about the Python-list
mailing list