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