【问题标题】:TypeError: 'builtin_function_or_method' object is not subscriptableTypeError:“builtin_function_or_method”对象不可下标
【发布时间】:2012-01-09 11:42:11
【问题描述】:
elif( listb[0] == "-test"):
    run_all.set("testview")
    listb.pop[0]

ERROR:Tkinter 回调 Traceback 中的异常(最近调用 最后):文件 “/tools/python/2.7.2/lib/python2.7/lib-tk/Tkinter.py”,第 1410 行, 在通话 在填充中返回 self.func(*args) 文件“./edit.py”,第 581 行 listb.pop[0] TypeError: 'builtin_function_or_method' 对象不可下标

#581 行由上面代码中的最后一个 pop 语句表示。 run_all 是一个 StringVar。

为什么会出现此错误,如何解决?

【问题讨论】:

    标签: python tkinter typeerror


    【解决方案1】:

    我想你想要

    listb.pop()[0]
    

    表达式listb.pop 是一个有效的python 表达式,它导致对pop 方法的引用,但实际上并没有调用该方法。您需要添加开括号和闭括号来调用该方法。

    【讨论】:

    • 这是 Python 2 吗?就我而言,它不适用于 Python 3。
    【解决方案2】:

    看起来您输入了方括号而不是括号。

    【讨论】:

      【解决方案3】:

      而不是写listb.pop[0]

      listb.pop()[0]
               ^
               |
      

      【讨论】:

        【解决方案4】:

        你试图访问 pop 就像是一个列表或一个元组,但 pop 不是。这是一种方法。

        【讨论】:

          【解决方案5】:

          不敢相信这个话题持续了这么久。 如果您分心,您会收到此错误 并使用 [] 而不是 (),至少在我的情况下。

          Pop 是列表数据类型上的一个方法, https://docs.python.org/2/tutorial/datastructures.html#more-on-lists

          因此,您不应该像使用列表一样使用 pop,pop[0]。 它是一种采用表示索引的可选参数的方法, 因此,正如 Tushar Palawat 在未获得批准的答案之一中指出的那样, 将修复上述示例的正确调整是:

          listb.pop(0)
          

          如果您不相信,请运行以下示例:

          if __name__ == '__main__':
            listb = ["-test"]
            if( listb[0] == "-test"):
              print(listb.pop(0))
          

          其他调整也可以,但感觉他们在滥用 Python 语言。这个帖子需要修复,不要让用户感到困惑。

          另外, a.pop() 删除并返回列表中的最后一项。 结果, a.pop()[0] 将获得第一个字符 最后一个元素。看起来这不是给定的代码 sn-p 目标是实现。

          【讨论】:

            【解决方案6】:

            当您在pop 操作中不使用括号时会出现此错误。以这种方式编写代码。

            listb.pop(0)
            

            这是一个有效的 Python 表达式。

            【讨论】:

              【解决方案7】:

              仅供参考,这不是帖子的答案。但它可能会帮助未来可能收到消息错误的用户:

              TypeError: 'builtin_function_or_method' 对象不可下标

              在我的情况下,它是由于压痕不良而发生的。

              只需缩进代码行即可解决问题。

              【讨论】:

                【解决方案8】:

                犯了类似的错误,很容易修复:

                    TypeError Traceback (most recent call last) <ipython-input-2-1eb12bfdc7db> in <module>
                  3 mylist = [10,20,30] ----> 4 arr = np.array[(10,20,30)] 5 d = {'a':10, 'b':20, 'c':30} TypeError: 'builtin_function_or_method' object is not subscriptable
                

                但我应该写成:

                arr = np.array([10,20,30])
                

                非常可修复的新手/愚蠢错误。

                【讨论】:

                  猜你喜欢
                  • 2020-02-03
                  • 2020-11-05
                  • 1970-01-01
                  • 2022-01-18
                  • 2018-08-04
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-03-26
                  相关资源
                  最近更新 更多