作为Python的初级开发人员,我在控制台中多次出现此错误消息,但我并不完全明白这意味着什么。
有没有人能以一般的方式告诉我,这种错误会产生什么样的行为呢?
答案 0 :(得分:36)
当您尝试使用 ()
调用非callable的对象时,会发生此错误。
可调用对象可以是函数或类(实现__call__
方法)。根据{{3}}:
object .__ call __(self [,args ...]):当实例被“调用”为函数时调用
例如:
x = 1
print x()
x
不是可调用的对象,但您尝试将其称为就像它一样。此示例产生错误:
TypeError: 'int' object is not callable
为了更好地理解什么是可调用对象Python Docs
答案 1 :(得分:4)
当您尝试调用不是函数的对象时,会发生此操作,与()
一样。例如,这将产生错误:
>>> a = 5
>>> a()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
如果类实例定义了方法__call__
导致此错误的一个常见错误是尝试查找列表或字典元素,但使用括号而不是方括号,即(0)
而不是[0]
答案 2 :(得分:4)
其他答案详细说明了错误原因。可能的原因(检查)可能是您的类具有相同名称的变量和方法,然后您将其调用。 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
>>>
答案 3 :(得分:2)
当您尝试调用不可调用的对象时,会引发异常。可调用对象是(函数,方法,具有__call__
的对象)
>>> f = 1
>>> callable(f)
False
>>> f()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
答案 4 :(得分:0)
我通过一个愚蠢的错误遇到了此错误消息。 Python的经典示例为您提供了足够的空间来愚弄自己。观察:
class DOH(object):
def __init__(self, property=None):
self.property=property
def property():
return property
x = DOH(1)
print(x.property())
结果
$ python3 t.py
Traceback (most recent call last):
File "t.py", line 9, in <module>
print(x.property())
TypeError: 'int' object is not callable
这里的问题当然是该函数被属性覆盖。
答案 5 :(得分:-2)
这只是意味着某些东西不是可调用对象