elif( listb[0] == "-test"):
run_all.set("testview")
listb.pop[0]
错误:Tkinter回调追踪中的异常(最近一次调用 最后):文件 “/tools/python/2.7.2/lib/python2.7/lib-tk/Tkinter.py”,第1410行, 在通话 return self.func(* args)文件“./edit.py”,第581行,在populate中 listb.pop [0] TypeError:'builtin_function_or_method'对象不可订阅
第581行由上面代码中的最后一个pop语句表示。 run_all是一个StringVar。
为什么我会收到此错误以及如何解决?
答案 0 :(得分:23)
我想你想要
listb.pop()[0]
表达式listb.pop
是一个有效的python表达式,它导致对pop
方法的引用,但实际上并不调用该方法。您需要添加打开和关闭的括号来调用方法。
答案 1 :(得分:6)
您尝试访问pop似乎是列表或元组,但pop不是。这是一种方法。
答案 2 :(得分:4)
而不是写listb.pop[0]
写
listb.pop()[0]
^
|
答案 3 :(得分:3)
不敢相信这个线程持续了这么长时间。 如果您分心,则会收到此错误 并至少在我的情况下使用[]代替()。
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]将获得该字符的第一个字符 最后一个元素。似乎这不是给定的代码片段 旨在实现。
答案 4 :(得分:2)
看起来像是您误输入括号而不是括号。
答案 5 :(得分:1)
如果不对pop
操作使用括号,则会出现此错误。以这种方式编写代码。
listb.pop(0)
这是一个有效的python表达式。
答案 6 :(得分:0)
仅供参考,这不是该帖子的答案。但这可能会帮助可能会收到以下错误消息的未来用户:
TypeError:“ builtin_function_or_method”对象不可下标
就我而言,它是由于缩进不良引起的。
只需缩进一行代码即可解决问题。
答案 7 :(得分:0)
存在类似的错误,易于修复:
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])
非常容易解决,菜鸟/傻瓜错误。