获取'NoneType'对象在空列表中没有属性'__getitem__'



这是我函数的片段:

def getFriends(screen_name, user_id=0):
    friends = []
    twitter = login()
    if screen_name:
    response = make_twitter_request(twitter.friends.ids, screen_name=screen_name, count=5000)
    else:
    response = make_twitter_request(twitter.friends.ids, user_id=user_id, count=5000)
    friends += response['ids']
    for i in range(10):
    cursor = response['next_cursor']
    if(cursor!=0):
        response = make_twitter_request(twitter.friends.ids, screen_name=screen_name, count=5000)
        friends += response['ids']
        print friends
    return friends

我已经确认响应不是空的,朋友确实是空列表,但是当我尝试这样做时friends += response['ids']我得到了回溯:

Traceback (most recent call last):
  File "hw2.py", line 75, in <module>
    makeGraph('katyperry')
  File "hw2.py", line 67, in makeGraph
    myList = getFriends(None, user_id=user_id)
  File "hw2.py", line 30, in getFriends
    friends += response['ids']
TypeError: 'NoneType' object has no attribute '__getitem__'

有人知道为什么吗?我错过了什么真的很明显吗?

编辑:这是回应,我已经删掉了一点列表,但这通常是你得到的

{u'next_cursor_str': u'1319524982440652073', u'previous_cursor': 0, u'ids': [764777174, 201407468, 354264328, 84230267, 19777398, 822447170, 1969597074, 215511591, 1072197655, 93090464, 1895856553, 2148169409, 209708391, 441902035, 32469566, 158314798, 59013314, 90368637, 1205971568, 2218722350, 26334324, 150459410, 188553447, 606580718, 16411682, 404747151, 50127057, 433057142, 387713711, 343649316, 1066545259, 1210138951, 1178700428, 325652049, 265234804, 176538071, 1671978253, 400541768, 111718180, 2320113704, 317262708, 716735610, 2299884229, 2310952307, 278721743, 172989401, 745672010, 289403411, 569259066, 704350131, 380131462, 1353007663, 551726304, 1129951819, 1196832457, 572515555, 1699140998, 238251656, 2183313640, 2271781134, 239867327, 283216570, 2187940812, 213011297, 1876144244, 26968935, 1655642300, 272308935, 1571227472, 325651498, 998220847, 550442329, 1240472737, 24607504, 64080354, 34774807, 211151198, 265495165, 44444328, 2159461650, 186888760, 263960873, 244490281, 1470947208, 431145806, 407064130, 133880286], u'next_cursor': 1319524982440652073, u'previous_cursor_str': u'0'}

您可以使用以下命令设置response

response = make_twitter_request(twitter.friends.ids, screen_name=screen_name, count=5000)

make_twitter_request() None返回.

response必须None__getitem__是用于重载[](也就是说,a[1]调用a.__class__.__getitem__(1))的 Python 神奇方法。您收到此错误是因为您仍在使用 2.x,如果您升级到较新的 3.x 系列(在某些次要方面不兼容,主要是清理语言),您将获得更友好的TypeError: 'NoneType' object is not subscriptable

该行上没有其他可能导致该错误的内容,因此除非make_twitter_request返回一些具有奇怪__getitem__的时髦类,否则response必须None

最新更新