Search code examples
pythoncallable

What is a "callable"?


Now that it's clear what a metaclass is, there is an associated concept that I use all the time without knowing what it really means.

I suppose everybody made once a mistake with parenthesis, resulting in an "object is not callable" exception. What's more, using __init__ and __new__ lead to wonder what this bloody __call__ can be used for.

Could you give me some explanations, including examples with the magic method ?


Solution

  • A callable is anything that can be called.

    The built-in callable (PyCallable_Check in objects.c) checks if the argument is either:

    • an instance of a class with a __call__ method or
    • is of a type that has a non null tp_call (c struct) member which indicates callability otherwise (such as in functions, methods etc.)

    The method named __call__ is (according to the documentation)

    Called when the instance is ''called'' as a function

    Example

    class Foo:
      def __call__(self):
        print 'called'
    
    foo_instance = Foo()
    foo_instance() #this is calling the __call__ method