has_method
Peter Hansen
peter at engcorp.com
Tue Aug 31 09:23:02 EDT 2004
Gandalf wrote:
>
> Does anyone knows how to tell if an object has a method with a given
> name? How can I access that method?
>
> For attributes, it is easy:
>
> class A(object):
> a = 12
> b = 'Python'
>
> a = A()
> a.__dict__.has_key('a') # True
> a.__dict__.has_key('b') # True
> a.__dict__.has_key('c') # False
>
> But it won't work for methods. Thanks in advance.
Don't access __dict__ directly. In fact, most of the time
the presence of the __ underscores is to warn you that you
are doing something unusual... here's the better way:
if callable(getattr(a, 'b')):
print 'has a method called b'
else:
print 'no method called b'
getattr(obj, name) retrieves the attribute, and callable()
checks if it's a method (roughly speaking... not quite but
good enough for your purposes I believe). Look in the docs
for the __builtin__ module to learn about these and other
such useful functions.
http://docs.python.org/lib/built-in-funcs.html#built-in-funcs
-Peter
More information about the Python-list
mailing list