Ошибка типа: объект «builtin_function_or_method» не может быть подписан - PullRequest
19 голосов
/ 30 ноября 2011
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, в вызов , возврат файла self.func (* args), файл" ./edit.py ", строка 581, в заполнении listb.pop [0] Ошибка типа: объект builtin_function_or_methodне подписывается

Строка # 581 представлена ​​последним оператором pop в приведенном выше коде.run_all является StringVar.

Почему я получаю эту ошибку и как ее можно решить?

Ответы [ 6 ]

27 голосов
/ 30 ноября 2011

Я думаю, что вы хотите

listb.pop()[0]

Выражение listb.pop является допустимым выражением python, которое приводит к ссылке на метод pop, но фактически не вызывает этот метод. Вам нужно добавить открывающие и закрывающие скобки для вызова метода.

6 голосов
/ 30 ноября 2011

Вы пытаетесь получить доступ к pop, как если бы он был списком или списком, но pop - нет. Это метод.

4 голосов
/ 14 октября 2015

вместо записи listb.pop[0] запись

listb.pop()[0]
         ^
         |
2 голосов
/ 26 августа 2018

Похоже, вы набрали скобки вместо скобок по ошибке.

1 голос
/ 29 мая 2018

Эта ошибка возникает, когда вы не используете скобки с операцией pop.Напишите код следующим образом.

listb.pop(0)

Это допустимое выражение Python.

0 голосов
/ 08 июня 2019

К вашему сведению, это не ответ на пост.Но это может помочь будущим пользователям, которые могут получить сообщение об ошибке:

TypeError: объект builtin_function_or_method не может быть подписанс плохим отступом.

Просто отступ строки кода решил проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...