다음 사항을 고려 코드 샘플 사용에도 불구하고 호환되지 않는 유형 :mypy 오류 - '연합'
error: Argument 1 to "get_square" has incompatible type "Union[str, bool, int]"; expected "int"
와 잘 모르겠어요 :이 코드에 대해 mypy를 실행하는 경우
from typing import Dict, Union
def count_chars(string) -> Dict[str, Union[str, bool, int]]:
result = {} # type: Dict[str, Union[str, bool, int]]
if isinstance(string, str) is False:
result["success"] = False
result["message"] = "Inavlid argument"
else:
result["success"] = True
result["result"] = len(string)
return result
def get_square(integer: int) -> int:
return integer * integer
def validate_str(string: str) -> bool:
check_count = count_chars(string)
if check_count["success"] is False:
print(check_count["message"])
return False
str_len_square = get_square(check_count["result"])
return bool(str_len_square > 42)
result = validate_str("Lorem ipsum")
, 다음과 같은 오류가 반환됩니다 Dict[str, Any]
을 첫 번째 함수에서 반환 된 형식으로 사용하거나 'TypedDict'mypy 확장을 설치하지 않고이 오류를 피할 수있는 방법. mypy가 실제로 '옳은가요', 모든 코드가 유형이 안전하지 않습니까, 아니면 mypy 버그로 간주되어야합니까?
당신은 진짜 미시적 인 전문가입니다. Michael, 많은 감사합니다! –