走走NoneType“对象有一个空的名单上没有属性“__getitem__”
这里是我的函数的代码片段:走走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
。
我已确认它不返回无 –
@ Stupid.Fat.Cat:**唯一的方法**您可以通过'make_twitter_request()'返回'None'来获得该异常。 –
正如你所看到的那样,这很令人费解,这是我在+ =之前打印出来的回应。 –
response
必须None
。__getitem__
是Python超载的神奇方法[]
(也就是说,a[1]
调用a.__class__.__getitem__(1)
)。如果您升级到较新的3.x系列(这在某些次要方面不兼容,主要是语言的清理),您会收到此错误,因为您仍在使用2.x,所以您会收到友好的TypeError: 'NoneType' object is not subscriptable
。
没有什么别的该行可能会造成这个错误,所以除非make_twitter_request
返回了有一个奇怪的__getitem__
一些时髦类,response
必须None
。
这就是为什么我问这个问题,答案被证实不是无,实际上是一个完全有效的JSON对象,但我得到这个错误。非常令人费解。 –
'response'为'None'; 'make_twitter_request()'做了什么? –
make_twitter_request()是一个使Twitter的API调用的包装。它按预期工作,它确实返回正确的json响应。 –
尝试打印出响应的类型和大小。 – Sheng