Python:什么“TypeError'xxx'对象不可调用”是什么意思?

时间:2014-01-24 05:11:44

标签: python

作为Python的初级开发人员,我在控制台中多次出现此错误消息,但我并不完全明白这意味着什么。

有没有人能以一般的方式告诉我,这种错误会产生什么样的行为呢?

6 个答案:

答案 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.aself.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)

这只是意味着某些东西不是可调用对象