Что такое callable-объект в Python?

Ответ

Callable-объект (вызываемый объект) в Python — это любой объект, который можно вызвать с помощью оператора (). Если объект можно вызвать, встроенная функция callable() вернет для него True.

Эта концепция является ключевой для функционального программирования в Python, позволяя передавать функции и методы как аргументы в другие функции (функции высшего порядка).

Основные типы вызываемых объектов:

  • Функции: Созданные через def или lambda.
  • Методы: Функции, связанные с экземпляром класса.
  • Классы: Вызов класса создает его экземпляр (MyClass()).
  • Экземпляры классов: Если в классе определен магический метод __call__().

Проверка и пример использования:

def regular_function():
    print("I am a function")

class MyCallableClass:
    def __call__(self, x):
        print(f"Instance called with {x}")

# Создаем экземпляр
my_instance = MyCallableClass()

# Проверяем объекты на вызываемость
print(f"Is function callable? {callable(regular_function)}") # True
print(f"Is class callable? {callable(MyCallableClass)}")     # True
print(f"Is instance callable? {callable(my_instance)}")     # True
print(f"Is integer callable? {callable(123)}")             # False

# Вызываем объекты
regular_function()      # Вывод: I am a function
my_instance(10)         # Вывод: Instance called with 10