Что означает «ошибка типа: объект [foo] не вызывается»?

#python

#python

Вопрос:

Я пытаюсь выполнить итерацию по списку сообщений Facebook, и я получаю следующую ошибку:

Ошибка типа: объект ‘list’ не вызывается

Вот мой код:

 MCTOT_postIDs = [["126693553344_10155053097028345"],
["126693553344_10155050947628345"],
["126693553344_10155048566893345"],
["126693553344_10155044677673345"],
["126693553344_10155042089618345"],
["126693553344_10155035937853345"],
["126693553344_10155023046098345"]]

g = facebook.GraphAPI()
g.access_token = g.get_app_access_token(APP_ID, APP_SECRET)

for x in MCTOT_postIDs():
g.get_object('fields="message, likes, shares')
  

Я знаю, что где-то допускаю основную ошибку, но, похоже, не могу ее понять. Спасибо!

Комментарии:

1. Вам просто нужно for x in MCTOT_postIDs:

2. Если вы ставите () после переменной, значит, вы пытаетесь вызвать ее как функцию. Как указано в ошибке, список нельзя вызвать. Так что отбросьте () .

3. Спасибо! Я внес рекомендуемое вами изменение, но теперь я получаю следующую ошибку: ошибка типа: get_object() отсутствует 1 требуемый позиционный аргумент: ‘id’

4. Эндрюсмит: Это другой вопрос об использовании API Facebook. Мы не можем отлаживать ваш код построчно с вами в Stack Overflow. Еще раз взгляните на документацию. Вероятно, вы также хотите использовать x значение в цикле (и иметь некоторый фактический код в цикле — при условии, что ваш отступ здесь показан правильно?). Если вы не можете понять это, потратив полчаса на чтение и пробуя что-то из документированных примеров, тогда отправьте другой вопрос, показывающий, что вы пробовали, и сосредоточьтесь на следующей ошибке.

Ответ №1:

Редактировать: Для другой ошибки функции g.get_object(…) требуется еще один аргумент, который вы не передаете. Вы передаете поля, но вы также должны передать идентификатор в качестве аргумента, вы должны передать x вашего цикла, который содержит идентификатор.

Вероятно, должно выглядеть так:

 g.get_object('fields="message, likes, shares', x)
  

или, может быть

 g.get_object('fields="message, likes, shares', x[0]) 
  

если вам нужно передать его в виде строки, а не массива (ваш список представляет собой список массивов)
но это должно быть темой для нового вопроса…


В сообщении об ошибке говорится:

 TypeError: 'list' object is not callable
  

Итак, посмотрите еще раз на свой код: когда вы пытаетесь выполнить for … в цикле вы пытаетесь вызвать свой список, как если бы это была функция.

Вы делаете

 for x in MCTOT_postIDs():
  

Когда вы должны делать

 for x in MCTOT_postIDs:
  

Список не вызывается, а функция () используется для вызова функции (что означает: выполнение функции). Удалите его, и он должен работать.