(Python 新手)不断收到“TypeError: 'int' object is not callable”

Posted

技术标签:

【中文标题】(Python 新手)不断收到“TypeError: \'int\' object is not callable”【英文标题】:(New to Python) Keep getting a "TypeError: 'int' object is not callable"(Python 新手)不断收到“TypeError: 'int' object is not callable” 【发布时间】:2014-11-25 19:04:39 【问题描述】:

我对 Python 非常陌生,我正在尝试为 GUI 编写一个程序,以从类分配列表中提取最频繁和最不频繁出现的名称。我一直收到一个

TypeError: 'int' 对象不可调用

此代码出错,我知道它与以下行有关:

word_frequencies += float[self.listMyData.Count(word)]/len[self.listMyData]  

但我不确定错误到底在说什么。我在这里查看了类似的问题,但仍然不确定我做错了什么。任何帮助将不胜感激。

这是完整的代码:

import wx
import myLoopGUI

class MyLoopFrame(myLoopGUI.MyFrame1):
    def __init__(self, parent):
        myLoopGUI.MyFrame1.__init__(self, parent)

    def clkAddData(self,parent):
        if len(self.txtAddData.Value) != 0:
            try:
                myname = str(self.txtAddData.Value)
                self.listMyData.Append(str(myname))
            except:
                wx.MessageBox("This has to be a name!")            
        else:
            wx.MessageBox("This can't be empty")




    def clkFindMost(self, parent):
        unique_words = []
        for word in range(self.listMyData.GetCount()):
                if word not in unique_words:
                    unique_words += [word]
        word_frequencies = []
        for word in unique_words:
            word_frequencies += float[self.listMyData.Count(word)]/len[self.listMyData]  

        max_index = 0
        frequent_words =[]
        for i in range(len(unique_words)):
            if word_frequencies[i] >= word_frequencies[max_index]:
                max_index = i
                frequent_words += unique_words[max_index]
        self.txtResults.Value = frequent_words



myApp = wx.App(False)
myFrame = MyLoopFrame(None)
myFrame.Show()
myApp.MainLoop()

【问题讨论】:

什么是“listMyData”? 如果我们不知道任何方法和属性的作用/是什么,就很难理解正在发生的事情。请整理一个MCVE,以独立的方式展示您的问题。 对不起。 listMyData 是与 GUI 中的文本框对应的事件。我正在使用 wxFormBuilder 创建一个界面,您可以在其中将数字插入列表框,然后单击两个按钮之一来查找最常见的名称或最不常见的名称。 【参考方案1】:

CountmyListData 的属性。你把括号“()”放在它后面,就像它是一个函数一样,但它不是。它只是一个设置的整数值。就像这样做:

y = 5
x = y(word)

这没有意义。我不确定你想用wordmyListData.Count 做什么,但也许你正在寻找的是self.myListData[word].Count

As user3666197 mentioned,您还想将float[...] 更改为float(...)

【讨论】:

【参考方案2】:

omni has explained.Count 属性问题。

由于这个原因,您可能还想修改 word_frequencies += float[ ... 行:

>>> float[ 5 ]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'type' object has no attribute '__getitem__'
>>> float( 5 )
5.0
>>>

【讨论】:

以上是关于(Python 新手)不断收到“TypeError: 'int' object is not callable”的主要内容,如果未能解决你的问题,请参考以下文章

我不断收到 TypeError: undefined is not a function

从网站中提取一些数据,但我不断收到 TypeError

SQL 新手只是试图导入 SQL 转储以在 python 中使用,不断收到“缺少数据库”和“缺少列”错误

在 KNeighborsClassifier 中使用自定义指标时,我不断收到“TypeError:只有整数标量数组可以转换为标量索引”

不断收到 TypeError:当我单击复选框时无法读取未定义的属性“地图”,不知道问题出在哪里

Python - TypeError:“NoneType”对象不可迭代