On Aug 1, 11:22 am, [EMAIL PROTECTED] wrote: > The following bit of code will allow an instance member to > be called by reference. How can I map a string (e.g. > "hello1" or "Foo.hello1" to a the instance member? > > class Foo: > def hello1(self, p): > print 'hello1', p > def hello2(self, p): > print 'hello2', p > def dispatch(self, func, p): > func(self,p) > > f=Foo() > f.dispatch(Foo.hello1, 23) > f.dispatch(Foo.hello1, 24) > > f.dispatch_as_string("hello1", 23) ## this is what I want to do. > > Many TIA and apologies if this is a FAQ, I googled and couldn't > find the answer.
Use getattr; add exception handling as needed. E.g., class Foo(object): def __init__(self): self.fake = None def hello1(self, p): print 'hello1', p def hello2(self, p): print 'hello2', p def dispatch_as_string(self, fname, p): try: inst_method=getattr(self, fname) inst_method(p) except AttributeError: # maybe no such attribute raise except TypeError: # maybe the attribute is not callable (wrong type) raise f = Foo() f.dispatch_as_string('hello1', 12) -- Hope this helps, Steven -- http://mail.python.org/mailman/listinfo/python-list