callable to disappear?

faulkner faulkner612 at comcast.net
Wed Aug 23 14:22:04 EDT 2006


what's wrong with hasattr(obj, '__call__')?

Antoon Pardon wrote:
> I have been reading http://www.python.org/dev/peps/pep-3100/
> en there is written:
>
>   To be removed:
>      ...
>
>      callable(): just call the object and catch the exception
>
>      ...
>
> But that doesn't seem to be a generally available option.
> The place where you want to check if something is callable
> doens't need to be the place where you actually want to call
> it. Removing callable will mean that you can't check whether
> or not something is callable without incurring the side-effects
> of calling it.
>
> I also think code will become more ugly
>
> How do you suggest I would code the following:
>
>     if callable(func):
>         for i, el in lst:
>             lst[i] = func(el)
> 	    othercode()
>
>
> I can code as follows:
>
>     try:
>         for i, el in lst:
> 	    lst[i] = func(el)
> 	    othercode()
>     except TypeError:
>         pass
>
>
> But this has the problem that othercode could throw a TypeError:
>
> So it seems I would need at least two try statements
>
>     try:
>         for i, el in lst:
> 	    try:
> 	        lst[i] = func(el)
> 	    except TypeError
> 	        raise LoopBreak
> 	othercode()
>     except LoopBreak:
>         pass
>
> And this still has problems because the TypeError could be
> raised because lst is an unsubscriptable object.
>
>
> Is there a chance this will be reconsidered?
> 
> -- 
> Antoon Pardon




More information about the Python-list mailing list