python 3.5부터는 타입힌트를 제공해준다.
유의해야 할 점은 개발자가 실수로 타입힌트를 잘못 적어도 런타임시 문제가 발생하지 않는다. (필자가 격어봄)
정적에서 이를 탐지할 수 있는 툴이 바로 Mypy 이다.
pip install mypy
mypy_test.py
value: str = 1
print(value)
실행 하면 문제가 발생하지 않는다. mypy로 타입힌트 정적 검사를 수행해 보자.
mypy mypy_test.py
my_test.py:1: error: Incompatible types in assignment (expression has type "int", variable has type "str") Found 1 error in 1 file (checked 1 source file)
하지만 mypy가 완벽한 도구는 아니라는 말이 있어서 잘못된 탐지를 할 경우에는 무시하는 주석 구문을 추가한다
value: str = 1 # type: ignore
장고에 mypy를 간단하게 적용해보자. 자세한 사항은 아래 링크된 깃에서 확인하자.
https://github.com/typeddjango/django-stubs
pip3 install django-stubs
프로젝트 루트 디렉토리에서 setup.cfg 생성 후 아래 내용을 기입한다.
myproject.settings는 본인 프로젝트 설정에 맞게 변경하는걸 잊지 말자.
[mypy]
plugins =
mypy_django_plugin.main
[mypy.plugins.django-stubs]
django_settings_module = "myproject.settings"
실행은
pypy 프로젝트명
고칠게 보인다..