作为一名刚开始学习Python的开发者,我经常在控制台上看到这个错误消息,但我并不完全理解它的含义。
有人能以一般的方式告诉我,什么样的操作会引起这个错误吗?
有人能以一般的方式告诉我,什么样的操作会引起这个错误吗?
当您尝试使用()
调用一个非可调用的对象时,会发生该错误。
可调用对象可以是函数或类(实现__call__
方法的类)。根据Python文档:
object.__call__(self[, args...]):当实例作为函数“调用”时调用
例如:
x = 1
print x()
x
不是可调用对象,但你试图像它是一样调用它。这个例子会产生错误:
TypeError: 'int' object is not callable
为了更好地理解什么是可调用对象,请阅读另一个SO帖子中的答案。
()
。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
>>>
当您尝试调用一个不是函数的对象时,例如使用()
,就会发生此错误。例如,这将产生以下错误:
尝试调用非函数对象时发生错误。
>>> a = 5
>>> a()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
如果类定义了方法__call__
,则可以调用类实例。
导致此错误的一个常见错误是尝试查找列表或字典元素,但使用括号而不是方括号,即使用(0)
代替[0]
。
当您试图调用一个不可调用对象时,会引发异常。可调用对象包括(函数、方法、带有__call__
的对象)
>>> f = 1
>>> callable(f)
False
>>> f()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
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
x[y]
而非x(y)
。 - cs95