TypeError:'int' 对象不可调用

2024-12-17 08:31:00
admin
原创
171
摘要:问题描述:鉴于以下情况:a = 23 b = 45 c = 16 round((a/b)*0.9*c) 运行上述程序会输出错误:TypeError: 'int' object is not callable. 如何将输出四舍五入为整数?解决方案 1:在您的代码中的其他地方,您会看到类似这样的内容:round...

问题描述:

鉴于以下情况:

a = 23
b = 45
c = 16

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

运行上述程序会输出错误:

TypeError: 'int' object is not callable.

如何将输出四舍五入为整数?


解决方案 1:

在您的代码中的其他地方,您会看到类似这样的内容:

round = 42

然后当你写

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

被解释为对绑定到 的对象进行函数调用round,即int。结果失败。

问题在于任何代码都将 绑定int到名称round。找到并删除它。

解决方案 2:

我得到了同样的错误(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

坦克

解决方案 3:

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

解决方案 4:

我也遇到了这个问题,但情况略有不同。

设想:

param = 1

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

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

将函数名称更改为其他名称并且它有效。

因此,基本上,根据我的理解,此错误意味着您试图将整数用作函数,或者更简单地说,被调用的函数名称也在代码中的某个地方用作整数。因此,只需尝试找出被调用函数名称的所有出现情况,并查看它是否在某个地方被用作整数。

我费了好大劲才找到这个,因此,在这里分享,以便其他人可以节省时间,以防他们遇到这个问题。

解决方案 5:

导致此错误“ TypeError: 'int' object is not callable ”的原因有两个

  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' 对象不可调用。

您可能忘记在中间放置运算符(在本例中为 '*')

解决方案 6:

就我而言,我改变了:

return <variable>

和:

return str(<variable>)

尝试以下操作,它一定会起作用:

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

解决方案 7:

有时问题可能是在计算时忘记了运算符。

例如:它

print(n-(-1+(math.sqrt(1-4(2*(-n))))/2))必须

print(n-(-1+(math.sqrt(1-4*(2*(-n))))/2))

高血压

解决方案 8:

如上所述,您int的代码中可能有一个变量名为 round(类型为 ),删除该变量应该可以消除错误。但是,对于 Jupyter 笔记本,简单地清除单元格或删除它可能不会使变量超出范围。在这种情况下,您可以在删除变量后重新启动笔记本以重新开始。

解决方案 9:

您始终可以使用以下方法来消除函数歧义。

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

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

解决方案 10:

我遇到此错误是因为我正在调用模型内部使用@property 装饰器的函数。

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

当我尝试在序列化器中调用此方法时,出现错误“TypeError:'int'对象不可调用”。

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

简而言之,问题在于 @property 装饰器将函数变成了 getter。您可以在此 SO 响应中了解有关 property() 的更多信息。

对我来说,解决方案是像访问变量一样访问 volume_range,而不是将其作为函数调用:

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

解决方案 11:

仅供参考:'int' object is not callable如果您意外地在 Pandas 数据框中使用了.size()方法(不存在)而不是.size属性,也会出现错误,如下所示。因此,错误可能会出现在意想不到的地方。

import pandas as pd
s = pd.Series([35, 52, 63, 52])
print("unique numbers: ",s.unique())
print("number of unique values: ",s.unique().size())
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2379  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1510  
  PLM(产品生命周期管理)系统在企业项目管理中扮演着至关重要的角色,它能够整合产品从概念设计到退役的全流程信息,提升协同效率,降低成本。然而,项目范围蔓延是项目管理过程中常见且棘手的问题,在PLM系统环境下也不例外。范围蔓延可能导致项目进度延迟、成本超支、质量下降等一系列不良后果,严重影响项目的成功交付。因此,如何在P...
plm项目经理是做什么   16  
  PLM(产品生命周期管理)系统在现代企业的产品研发与管理过程中扮演着至关重要的角色。它不仅仅是一个管理产品数据的工具,更能在利益相关者分析以及沟通矩阵设计方面提供强大的支持。通过合理运用PLM系统,企业能够更好地识别、理解和管理与产品相关的各类利益相关者,构建高效的沟通机制,从而提升产品开发的效率与质量,增强企业的市场...
plm是什么   20  
  PLM(产品生命周期管理)项目管理对于企业产品的全生命周期规划、执行与监控至关重要。在项目推进过程中,监控进度偏差是确保项目按时、按质量完成的关键环节。五维健康检查指标体系为有效监控PLM项目进度偏差提供了全面且系统的方法,涵盖了项目的多个关键维度,有助于及时发现问题并采取针对性措施。需求维度:精准把握项目基石需求维度...
plm项目管理软件   18  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用