"John Fouhy" <[EMAIL PROTECTED]> wrote
otherwise. this will be removed for Python 3.x because you can
just
use hasattr(obj, '__call__').
I was about to go BOO HISS because callable() is much more
readable than hasattr() but...
you can instead say:
try:
foo()
except TypeError:
# do something else
This makes slightly more sense, although a TypeError seems a bit
too vague, if it had bveen a CallableError then I'd say fine. With
TypeError we have a much wider chance of a problem, particularly
if the callable takes parameters:
sum('foo')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
I can see the reason easily interactively but in a try except
its much harder to tell if the Typeerror was due to sum being
non callable or to me giving an invalid argument!
So still a bit of a boo hiss. But at least I can use hasattr within
the handler I suppose.
--
Alan Gauld
Author of the Learn to Program web site
http://www.freenetpages.co.uk/hp/alan.gauld
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor