2014-02-25 2 views
-1

빈 목록에는 속성 '__getitem__'가 없습니다 :얻기 'NoneType'개체가 여기 내 함수의 코드 조각의

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 

나는 응답이 비어 있지 않은지 확인했습니다 및 친구 것을 실제로 빈 목록입니다,

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__' 

사람이 어떤 생각 이유가 있습니다 : 나는 friends += response['ids']을 할 때 아직 나는 역 추적을 얻을? ? 그것은 내가 "M 것이없는 정말 분명 뭔가가

편집 : 여기에 응답, 나는 목록을 조금 잘라했습니다, 그러나 이것은 당신이 당신은 response 설정

{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'} 
+0

'response'는'None'입니다. 'make_twitter_request()'는 무엇을합니까? –

+0

make_twitter_request()는 twitter API 호출을하는 래퍼입니다. 그것은 의도대로 작동하고 올바른 json 응답을 리턴합니다. –

+0

응답의 유형 및 내용을 인쇄 해보십시오. – Sheng

답변

2

무엇을 얻을 일반적이다 :

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

make_twitter_request()None를 반환했습니다.

+0

나는 그것이 반환하지 않는다는 것을 확인했다. None –

+0

@ Stupid.Fat.Cat : 유일한 방법 **은 예외를'make_twitter_request()'에 의해'None'으로 반환 할 수있다. –

+0

당신이 볼 수 있듯이, 내가 + =의 직전에 인쇄 한 것은 당황 스럽다. –

0

responseNone을해야합니다. __getitem__[]을 오버로드하는 파이썬 매직 메소드입니다 (즉, a[1]a.__class__.__getitem__(1)). 2.x를 계속 사용하고 있기 때문에이 오류가 발생합니다. 새로운 3.x 시리즈 (일부 사소한 방법으로는 호환되지 않는 언어로 대부분 정리 됨)로 업그레이드 한 경우 더 친숙한 TypeError: 'NoneType' object is not subscriptable을 얻을 수 있습니다.

이상한 __getitem__을 가지고 몇 가지 펑키 클래스를 반환 make_twitter_request하지 않는, 그래서 그 오류의 원인이 될 수있는 행에 다른 아무것도 없다, responseNone해야합니다.

+0

그게 내가이 질문을하는 이유이고, 응답은 None이 아니라는 것이 확인되었고, 사실은 완벽하게 유효한 json 객체이다. 그러나 나는이 오류를 얻고있다. 아주 수수께끼 같아. –