Python: Что означает "TypeError 'xxx' object is not callable"?

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

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

Решение

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

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

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

Например:

x = 1
print x()

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

TypeError: 'int' object is not callable

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

Комментарии (0)

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

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

Экземпляры классов также могут быть вызваны, если они определяют метод __call__.

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

Комментарии (0)

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

например, класс определяет самостоятельно.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 "", line 1, in 
TypeError: 'int' object is not callable
>>>
Комментарии (0)

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

>>> f = 1
>>> callable(f)
False
>>> f()
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'int' object is not callable
Комментарии (0)

Это просто означает, что что-то тут'т вызываемый объект

Комментарии (0)