how to access class methods via their name-as-string

G

Guest

I'd like to be able to look up a method name by passing a string with
the method name. I thought I could use self.__dict__ to get at the
method names, but as my example shows, this is obviously not working.
I've also tried self.__class__.__dict__ without success.

Can anyone point me in the right direction to make this work?

Thanks,
Phil
def m1(self):
print 'm1'
def __getitem__(self, k):
return self.__dict__[k]
def m2(self):
print 'm2'

z=b()
dir(z) ['__doc__', '__getitem__', '__module__', 'm1', 'm2']
z['m1']
Traceback (most recent call last):
File "<pyshell#56>", line 1, in ?
z['m1']
File "<pyshell#51>", line 5, in __getitem__
return self.__dict__[k]
KeyError: 'm1'
 
S

Steven Bethard

I'd like to be able to look up a method name by passing a string with
the method name.

Use getattr:

py> class A(object):
.... def f(self):
.... pass
.... def g(self):
.... pass
....
py> class B(A):
.... def h(self):
.... pass
....
py> getattr(B(), 'f')
<bound method B.f of <__main__.B object at 0x011D7790>>
py> getattr(B(), 'g')
<bound method B.g of <__main__.B object at 0x01222390>>
py> getattr(B(), 'h')
<bound method B.h of <__main__.B object at 0x011D7790>>

Steve
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,743
Messages
2,569,478
Members
44,898
Latest member
BlairH7607

Latest Threads

Top