Python:什么是 "TypeError'xxx'对象不可调用"?

作为 Python 的初级开发人员,我在控制台中多次看到这个错误信息,但我并不完全理解它的含义。

有谁能大致告诉我,什么样的操作会产生这个错误?

解决办法

当您尝试用 () 调用一个不是 callable 的对象时,就会出现该错误。

可调用对象可以是一个函数或一个类(实现了 __call__ 方法)。根据 Python 文档

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)

当你试图调用不可调用对象时,就会出现异常。可调用对象包括(函数、方法、带有 __call__ 的对象)

>>> f = 1
>>> callable(f)
False
>>> f()
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'int' object is not callable
评论(0)