Как начинающий разработчик на Python я'много раз видел это сообщение об ошибке, появляющееся в моей консоли, но я'не совсем понимаю, что оно означает.
Может ли кто-нибудь сказать мне в общих чертах, какое действие приводит к этой ошибке?
Эта ошибка возникает, когда вы пытаетесь вызвать с помощью ()
объект, который не является вызываемым.
Вызываемым объектом может быть функция или класс (реализующий метод __call__
). Согласно Python Docs:
object.call(self[, args...]): Вызывается, когда экземпляр "вызывается" как функция
Например:
x = 1
print x()
x
не является вызываемым объектом, но вы пытаетесь вызвать его так, как будто он им является. Этот пример выдает ошибку:
TypeError: 'int' object is not callable
Для лучшего понимания того, что такое вызываемый объект прочитайте этот ответ в другом посте SO.
Это действие происходит, когда вы пытаетесь вызвать объект, который не является функцией, как, например, ()
. Например, это приведет к ошибке:
>>> a = 5
>>> a()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
Экземпляры классов также могут быть вызваны, если они определяют метод __call__
.
Одна из распространенных ошибок, вызывающих эту ошибку, - попытка поиска элемента списка или словаря, но использование круглых скобок вместо квадратных скобок, т.е. (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 "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
>>>
Исключение возникает, когда вы пытаетесь вызвать не вызываемый объект. Вызываемыми объектами являются (функции, методы, объекты с __call__
)
>>> f = 1
>>> callable(f)
False
>>> f()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable