In article <mailman.2807.1384725251.18130.python-l...@python.org>, Tamer Higazi <th9...@googlemail.com> wrote:
> Hi people! > > Assume we have 2 methods, one called Fire and the other __DoSomething. > > I want the param which is a string to be converted, that I can fire > directly a method. Is it somehow possible in python, instead of writing > if else statements ???! > > > > Tamer > > > class(object): > def Fire(self,param) > #possible ?! > self.__param(): > > > def _DoSomething(self): > print 'I did it!' I'm not sure why you'd want to do this, but it's certainly possible (as, I imagine it would be, in any language that has introspection). You can use getattr() to look up an attribute by name. Here's a little program which demonstrates this: class C: def Fire(self, param): print "I'm Fire" try: f = getattr(self, param) f() except AttributeError as ex: print "==> %s" % ex def _DoSomething(self): print "I'm _DoSomething" if __name__ == '__main__': c = C() c.Fire("_DoSomething") c.Fire("blah") $ python s.py I'm Fire I'm _DoSomething I'm Fire ==> C instance has no attribute 'blah' One thing to be aware of is that a single underscore in front of a name is fine, but a double underscore (i.e. "__DoSomething") invokes a little bit of Python Magic and will give you unexpected results. -- https://mail.python.org/mailman/listinfo/python-list