Python:什么意思 "TypeError 'xxx' 对象不能被调用"?

2024-03-29 12:40:57 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
3条回答

当您试图用()调用一个不是callable的对象时,就会发生此错误。

可调用对象可以是函数或类(实现__call__方法)。根据Python Docs

object.__call__(self[, args...]): Called when the instance is “called” as a function

例如:

x = 1
print x()

x不是可调用的对象,但您正试图将其作为可调用对象来调用。此示例生成错误:

TypeError: 'int' object is not callable

为了更好地理解什么是可调用的对象read this answer in another SO post.

当您试图调用不是函数的对象时,就会发生此操作,如()。例如,这将产生错误:

>>> a = 5
>>> a()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable

如果类实例定义了方法__call__,则也可以调用它们

导致此错误的一个常见错误是试图查找list或dictionary元素,但使用括号而不是方括号,即(0)而不是[0]

另一个答案详细说明了错误的原因。一个可能的原因(检查)可能是你的类有一个同名的变量和方法,然后你调用它。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
>>>

相关问题 更多 >