[Python-Dev] concerns regarding callable() method
Paul Pogonyshev
pogonyshev at gmx.net
Sun Apr 8 17:56:42 CEST 2007
Guido van Rossum wrote:
> On 4/8/07, Paul Pogonyshev <pogonyshev at gmx.net> wrote:
> > Additionally consider something like
> >
> > something.set_callback (x)
> >
> > Assume that set_callback() wants to check if `x' is callable at
> > all, to raise exception early and make error tracking easier.
> > Currently, you can
> >
> > assert callable (x)
> >
> > But if callable() is removed, there is no apparent replacement. Of
> > course, you cannot call `x' since it might have side-effects or be
> > slow etc.
>
> assert hasattr(x, '__call__')
>
> I note that callable() was introduced before all callable objects had
> a __call__ attribute. This is no longer the case, so it's not needed.
I just didn't think about that possibility. If that works the same way,
callable() is just a sugar and not something unimplementable in other
ways. Therefore, my objection is discarded. (But PEP 3100 should probably
be update to mention this, otherwise you may get this complaint again ;)
> > Please reconsider removal of callable() or provide an adequate
> > replacement.
>
> What if someone passes a callable that doesn't have the expected signature?
Well, I don't know a way to catch such situations now, so removing
callable() will not make it worse (even if you don't know about hasattr
trick above.)
Paul
More information about the Python-Dev
mailing list