2017-01-20 3 views
0

이것은 작업중인 로그 파서의 코드 조각입니다. 로그 파서는 블레이드 섀시 용이며 여러 블레이드 서버를 수용합니다.개체 목록을 반복하여 클래스 특성을 할당합니다.

나는() blade_populate에서 for 루프에서 다음과 같은 오류를 받고 있어요 :

"필수 예상 유형은 아무도 없어"이 객체를 통해 반복하는 올바른 방법이 될 것입니다 무엇 list를 사용하여 나중에 파이썬이 iDRAC와 같은 펌웨어를 채울 수있게 할 수 있습니까?

def blade_create(): 
    blades= [] 
    for servers in range(blade_count()): 
     blades.append(servers) 
     return blades 

blades = blade_create() 

# Parse log to obtain FW revisions for blades 

def blade_populate(): 

    for blade in range(blades): 
     drac = log.readline() 
+1

첫 번째 함수의'return' 문이 실제로 루프 안에 들여 쓰기되어 있습니까? 그건 네가 원하는대로 될 수없는 것 같아. 만일 당신이 그것을 들락 거리지 않는다면, 당신은'blade_count()'가'0'을 반환하더라도 항상리스트를 반환 할 것입니다. 그러나 루프를 사용하여 직접 목록을 작성하는 대신 'range (blade_count())'를 대신 반환 할 수 있습니다. – Blckknght

+0

그것은 그 것이고 나의 잘못은 사라졌습니다. 나는 지쳤다. 외침에 감사드립니다! 편집 : 나는 당신에게 답 신용을 줄 수는 없지만, 어떤 이유로 든 내 상태 때문일 수 있습니다. – Dylan

+0

코멘트이기 때문에 받아 들일 수 없습니다 (Stack Overflow 또는 실제 문제를 코드를 오타가 복사 한 것인지 확실하지 않았습니다). 나는 그것을 아래의 대답으로 확장했다. – Blckknght

답변

0

당신은 망상 오류가있는 것 같습니다. 함수의 return 문이 루프 안에 있습니다. 즉, 루프가 첫 번째 반복을 실행할 때 적중되거나 루프가 전혀 실행되지 않으면 (범위가 비어 있기 때문에) return이 전혀 없습니다 (파이썬에서는 return None과 같습니다). 그것을 해결하기 위해

return 진술 한 수준을내어 쓰 :

def blade_create(): 
    blades= [] 
    for servers in range(blade_count()): 
     blades.append(servers) 
    return blades        # unindent here! 

blades = blade_create() 

# Parse log to obtain FW revisions for blades 

def blade_populate(): 
    for blade in blades:  # this line shouldn't use range if blades is a list 
     drac = log.readline() 
내가 필요가 수정할 수 있도록 경우 blade_create() 기능 range(blade_count())에 (그것의 주위에 감싸 인 아마 list(...)에 해당하는 것을 그러나주의 것

나중에 결과). 그것은 당신이 전혀 다른 기능을 필요로하지 않을 수도 있습니다.

관련 문제