함수 내에서 가능한 모든 경우를 확인해도 MyPy 오류 "누락 된 return 문"이 표시됩니다.MyPy는 모든 사례가 테스트 된 경우에도 "누락 된 return 문"오류를 표시합니다.
예를 들어, 다음 코드에서 MyPy은 여전히 비록 color
만 Color.RED
, Color.GREEN
, 또는 Color.BLUE
될 수있다, 나에게 오류 "9: error: Missing return statement"
를주고있다, 나는 모든 경우를 테스트!
class Color(enum.IntEnum):
RED: int = 1
GREEN: int = 2
BLUE: int = 3
def test_enum(color: Color) -> str:
if color == Color.RED:
return "red"
elif color == Color.GREEN:
return "green"
elif color == Color.BLUE:
return "blue"
'색상'이 3 가지 경우 중 어느 것과도 동일하지 않은 경우 사례를 처리하지 않았습니다. 예를 들어'color'는''hahaha you missing me "'와 같습니다. – Sraw
아무 것도 반환하지 않는 코드가 있습니다 (예 :'color'가 확인중인 색상이 아닌 경우). 마지막 엘프를 무조건'else'로 변경하거나 에러를 던지거나 에러 코드를 반환하는'else'를 새로 추가 할 수 있습니다. –
직감이 정확합니다. Swift와 같은 언어에서는 Swift 컴파일러가 열거 형에서 가능한 옵션을 해석하기 때문에 이것이 완벽하게 유효합니다. 내 생각 엔 MyPy가 (아직) 그렇게하지 않고 단순히 문자열 값을 열거 형 문맥을 완전히 인식하지 못하는 문자열 값과 비교한다는 것입니다. –