Python: Что означает объект TypeError 'xxx' не вызываемый?

Как начинающий разработчик в Python, я видел, что это сообщение об ошибке неоднократно появлялось в моей консоли, но я не совсем понимаю, что это значит.

Может ли кто-нибудь сказать мне, в общем, какое действие вызывает эту ошибку?

Ответ 1

Эта ошибка возникает при попытке вызвать () объект, который не является вызываемым.

Вызываемый объект может быть функцией или классом (который реализует метод __call__). Согласно Python Docs:

object.__ call __ (self [, args...]): вызывается, когда экземпляр "вызывается" как функция

Например:

x = 1
print x()

x не является вызываемым объектом, но вы пытаетесь вызвать его так, как если бы он был. В этом примере возникает ошибка:

TypeError: 'int' object is not callable

Для лучшего понимания того, что является вызываемым объектом прочитайте этот ответ в другом сообщении SO.

Ответ 2

Действие происходит, когда вы пытаетесь вызвать объект, который не является функцией, как с (). Например, это приведет к ошибке:

>>> a = 5
>>> a()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable

Также можно вызвать экземпляры классов, если они определяют метод __call__

Одной из распространенных ошибок, вызывающих эту ошибку, является поиск элемента списка или словаря, но с помощью круглых скобок вместо квадратных скобок, т.е. (0) вместо [0]

Ответ 3

Другие ответы подробно описывают причину ошибки. Возможная причина (для проверки) может заключаться в том, что в вашем классе есть переменная и метод с тем же именем, которое вы затем вызываете. Python обращается к переменной как к вызываемой - с помощью ().

например Класс A определяет self.a и self.a():

>>> class A:
...     def __init__(self, val):
...         self.a = val
...     def a(self):
...         return self.a
...
>>> my_a = A(12)
>>> val = my_a.a()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
>>>

Ответ 4

Исключение возникает при попытке вызвать не вызываемый объект. Вызываемые объекты (функции, методы, объекты с __call__)

>>> f = 1
>>> callable(f)
False
>>> f()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable

Ответ 5

Это просто означает, что что-то не является вызываемым объектом