TypeError: ‘ int’对象不可调用

给定下列整数和计算

from __future__ import division


a = 23
b = 45
c = 16


round((a/b)*0.9*c)

结果是:

TypeError: 'int' object is not callable.

如何将输出舍入为整数?

591579 次浏览

通过将 int绑定到其他地方来停止对 round的践踏。

在您的代码中的其他地方,您的代码看起来是这样的:

round = 42

当你写作的时候

round((a/b)*0.9*c)

它被解释为对绑定到 round的对象的函数调用,roundint。但是失败了。

问题是无论什么代码将 int绑定到名称 round,都要找到并删除它。

我得到了相同的错误(TypeError: ‘ int’对象不可调用)

def xlim(i,k,s1,s2):
x=i/(2*k)
xl=x*(1-s2*x-s1*(1-x)) / (1-s2*x**2-2*s1*x(1-x))
return xl
... ... ... ...


>>> xlim(1,100,0,0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in xlim
TypeError: 'int' object is not callable

读完这篇文章后,我意识到我忘记了一个 ×

def xlim(i,k,s1,s2):
x=i/(2*k)
xl=x*(1-s2*x-s1*(1-x)) / (1-s2*x**2-2*s1*x * (1-x))
return xl


xlim(1.0,100.0,0.0,0.0)
0.005

坦克

就我而言,我改变了:

return <variable>

与:

return str(<variable>)

尝试以下方法,它必须起作用:

str(round((a/b)*0.9*c))

我当时也面临这个问题,但情况有所不同。

场景:

param = 1


def param():
.....
def func():
if param:
var = {passing a dict here}
param(var)

这里看起来很简单,也是一个愚蠢的错误,但是由于实际代码中有多行代码,我花了一些时间才弄清楚我使用的变量名和我的函数名是一样的,因此我得到了这个错误。

将函数名更改为其他名称,并且它起作用了。

基本上,根据我的理解,这个错误意味着你要使用一个整数作为函数或者更简单的说,被调用的函数名在代码中的某个地方也作为一个整数使用。 所以,只要找出被调用函数名的所有匹配项,并查看它是否被用作某个整数。

我努力寻找这个,所以,在这里分享它,以便其他人可以节省他们的时间,以防万一他们进入这个问题。

如前所述,您的代码中可能有一个名为 round (类型为 int)的变量,删除该变量应该可以消除该错误。然而,对于 Jupiter 笔记本电脑来说,简单地清除或删除一个单元格可能不会使变量超出作用域。在这种情况下,可以在删除变量后重新启动笔记本以重新开始。

有时候问题是在计算时忘记了一个运算符。
例如:
相当于 print(n-(-1+(math.sqrt(1-4(2*(-n))))/2))
一定是
print(n-(-1+(math.sqrt(1-4*(2*(-n))))/2))

高温

出现此错误“ TypeError: ‘ int’对象不可调用”有两个原因

  1. 函数具有整数值

考虑一下

a = [5, 10, 15, 20]
max = 0
max = max(a)
print(max)

这将产生 TypeError: ‘ int’对象不可调用。

只需将变量名“ max”更改为 var (say)。

a = [5, 10, 15, 20]
var = 0
var = max(a)
print(var)

以上代码将完美运行,没有任何错误! !

  1. 缺少一个数学算子

考虑一下

a = 5
b = a(a+1)
print(b)

这也会产生 TypeError: ‘ int’对象不可调用。

您可能忘记将操作符放在(在本例中为’*’)之间

您总是可以使用下面的方法来消除函数的歧义。

__import__('__builtin__').round((a/b)*0.9*c)

__builtin__是所有内置函数(如 round、 min、 max 等)的模块名。对来自其他模块的函数使用适当的模块名称。

我遇到了这个错误,因为我正在调用我的模型中使用 @ 装修工的一个函数。

@property
def volume_range(self):
return self.max_oz - self.min_oz

当我试图在序列化程序中调用这个方法时,出现了错误“ TypeError: ‘ int’object is not call”。

    def get_oz_range(self, obj):
return obj.volume_range()

简而言之,问题在于@property 修饰符将函数转换为 getter.您可以在这个 SO 响应中阅读有关 property ()的更多信息。

对我来说,解决方案是像访问变量一样访问 volul _ range,而不是像调用函数一样调用它:

    def get_oz_range(self, obj):
return obj.volume_range # No more parenthesis