ABCs, functions, and __call__ (Python3)

Christian Heimes lists at cheimes.de
Sat Jan 17 02:13:58 CET 2009


andrew cooke schrieb:
> I think I'm missing something obvious here, so apologies in advance.
> 
> I'd like to be able to test whether something is a function or
> implements __call__.  Now obviously I can do that as two separate
> tests, but I though this was what ABCs were for.  However, for the
> life of me I cannot find what the correct ABC would be.  Does it
> exist?  Is there some other, more traditional approach I should be
> using?  Or do I have to roll my own somehow?

There is no ABC for this particular check. Any callable in Python 3.0
has a "__call__" attribute. In order to distinguish functions from
callable you can use the inspect module, in particular
inspect.isfunction(), inspect.ismethod() and inspect.isbuiltin().

Christian




More information about the Python-list mailing list