Python callable()
function is a Python built-in function that returns True if the object is callable, else it returns False.
A callable as the name signifies is anything that can be called. So anything can be called as long as they belong to the class that defines the __call__()
magic method.
Python callable() function checks for either of the following.
__call__()
method orThe method __call__()
is invoked when the instance is ”called” as a function.
Note that classes are callable (calling a class returns a new instance); instances are callable if their class has a __call__()
method.
Python callable()
function returns:
foo = 'Python'
print(callable(foo)) #this will return false
#class
class foo1:
def __call__(self):
print('Python')
print(callable(foo1)) #this will return true
#function
def foo3():
print('Python')
print(callable(foo3)) #this will return true
#instance of a class
class foo4:
def test_func(self):
print('python')
object1 = foo4()
object1() #this will throw error
This script will generate following output.
False True True Traceback (most recent call last): File "<pyshell#3>", line 1, in <module> object1() TypeError: 'foo4' object is not callable
As you can see the last line of code where we called the instance of class foo4
raises an error because the instance of class object1 appears as callable but is not in actual.
This is because the object is not associated with any __call__()
function in the class foo4
.
Now if we define class foo4
with a function __call__()
, its instance won’t raise an error and will return True when checked if it’s callable or not.
class foo4:
def __call__(self):
print('python')
object1 = foo4()
object1()
#check if it's callable or not
print(callable(object1))
>
Here is the output generated.
Python True
As you can see in above output, the object doesn’t raise any error when called and return True when checked.