On Sat, 13 Dec 2008 02:59:34 +0100, Andreas Kostyrka wrote:

> On Fri, Dec 12, 2008 at 06:06:35PM -0500, Shrutarshi Basu wrote:
>> I have a list containing strings like :
>> 
>> func1[]
>> func2[1,2]
>> func3[blah]
>> 
>> I want to turn them into method calls (with numeric or string
>> arguments) on a supplied object. I'm trying to figure out the best way
>> to do this. Since these lists could be very big, and the methods could
>> be rather complex (mainly graphics manipulation) I would like to start
>> by getting a list of the object's methods and make sure that all the
>> strings are valid. Is there a way to ask an object for a list of it's
>> methods (with argument requirements if possible)?
>
> Well, there are ways, but they are not reliable by design. Objects can
> return dynamically methods.
> 
> So use something like this:
> 
> if callable(getattr(obj, "func1")):
>     # func1 exists.
> 
> Guess nowaday with Python3 released, you should not use callable, but
> instead test on __call__
> 
> if hasattr(getattr(obj, "func1"), "__call__"):

or the more pythonic version would just call func() and catch exception 
if it's not callable:

try:
    func1()
except TypeError:
    print "func1 is not callable"

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to