[Tutor] Ask a class for it's methods
Lie Ryan
lie.1296 at gmail.com
Sat Dec 13 09:03:10 CET 2008
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"
More information about the Tutor
mailing list