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

Метод callable() принимает только один аргумент — object, и возвращает одно из двух значений (True, если объект кажется вызываемым).
Синтаксис
|
1 |
callable(object) |
Метод callable() возвращает следующие логические значения:
- True: если объект кажется вызываемым.
- False: если объект не вызывается.
Может быть несколько случаев, когда Python callable() возвращает true, но вызов объекта терпит неудачу. Но если это так и он возвращает False, вызов объекта никогда не будет успешным.
См. следующий пример кода.
|
1 2 3 4 5 6 7 8 9 10 11 |
# app.py def StrangerThings(): return 11 eleven = StrangerThings print(callable(eleven)) jane = 1 * 11 print(callable(jane)) |
Здесь мы видим в первом случае, когда объект передается в метод callable(), и он возвращает True. Это так, потому что 11 является объектом вызываемой функции StrangerThings (что может быть не во всех случаях).
Во втором случае jane не является вызываемым объектом, поэтому результатом будет False.
Вызываемый объект
См. следующий пример кода.
|
1 2 3 4 5 |
class App: def __call__(self): print('Eleven is love') print(callable(App)) |
Вывод:
|
1 2 3 |
➜ pyt python3 app.py True ➜ pyt |
Экземпляр класса App кажется вызываемым.
Когда Object Выглядит вызываемым, но не вызывается
Хорошо, давайте рассмотрим сценарий, в котором объект кажется вызываемым, но на самом деле он не вызывается.
Пример:
|
1 2 3 4 5 |
class App: def printFunc(self): print('Hopper is great character') print(callable(App)) |
Вывод:
|
1 2 3 |
➜ pyt python3 app.py True ➜ pyt |
Итак, он возвращает True, но не вызывается.
|
1 2 3 4 5 6 7 8 9 |
# app.py class App: def printFunc(self): print('Hopper is great character') print(callable(App)) AppDividend = App() AppDividend() |
Вызываемый объект — это объект, который позволяет вам использовать круглую скобку( ) и в конечном итоге передавать некоторые параметры, как мы привыкли делать в функциях.
Каждый раз, когда вы определяете функцию, Питон создает вызываемый объект. В следующем примере вы можете определить функцию func следующими способами:
|
1 2 3 4 5 6 7 |
➜ pyt python3 app.py True Traceback(most recent call last): File "app.py", line 7, in <module> AppDividend() TypeError: 'App' object is not callable ➜ pyt |
Метод callable() возвращает True, предполагая, что класс App является вызываемым, но экземпляр App не является callable() и возвращает ошибку времени выполнения.
Встроенный метод callable() проверяет, является ли аргумент:
- Экземпляр класса с методом __call__.
- Это тип, который указывает возможность вызова, например, в функциях, методах и т. д., или имеет ненулевой элемент tp_call(c struct).
- Если объект является экземпляром некоторого класса, он может быть вызван, если у него есть атрибут __call__.
- В противном случае объект x может быть вызван, если x->ob_type->tp_call != NULL.
Вы всегда можете использовать встроенную callable функцию, чтобы определить, является ли данный объект вызываемым, или, что еще лучше, просто вызвать его и позже поймать TypeError . callable удален в Python 3.0 и 3.1, используйте callable = lambda o: hasattr(o, ‘__call__’) или isinstance(o, collections.Callable) .
