Great points so far! But here’s something even more interesting—classes themselves are callable.
Why? Because the type class defines __call__.
class Example:
pass
print(callable(Example)) # True ✅
This means when you do Example(), Python actually calls Example.__call__(), which is defined in type. That’s how instances are created! ![]()
Similarly, built-in functions like max are callable:
print(callable(max)) # True ✅
So, in summary:
Functions & Methods → Callable (Because of __call__)
Instances → Callable if they define __call__
Classes → Callable (Because type has __call__)
Static & Class Methods → Not callable (They wrap callables, but aren’t directly callable)
And that’s the complete picture of the Python callable type! ![]()