Categories: Python

【Python】型ヒントに沿ってソースコードが書けているかチェックする方法

この記事では、Pythonのソースコードが型ヒントに沿って書けているかチェックする方法を解説します。

ソースコードが型ヒント通りに書けているか確認するにはmypyモジュールを使います。mypyは、標準ライブラリではないのでpipでインストールします。

Linkmypy 0.961 documentation

それでは、実際に簡単なソースコードを作成してmypyを使って型ヒント通りに書けているかチェックしてみましょう!

mypyのインストール

mypyは標準モジュールではないのでインストールする必要があります。

仮想環境を利用したい場合は以下の記事を参照してください。

仮想環境の使い方【venv】

ここではpipを使ってインストールします。

$ pip install mypy

pipが使用できない方は以下の記事を参照してください。

pipのインストール【Mac/Windows】

ソースコードの用意

mypyがインストールできたら次に、以下のような簡単なソースコードを用意します。名前は適当にtestmypy.pyとかで保存しましょう。

testmypy.py

num: int | float = 'abc'
vals: list[str] = [1, 2, 3]

num変数にはintvals変数にはstrlistを型ヒントで指定していますが、敢えて異なる型のオブジェクトを代入しています。

型ヒントについては以下の記事を参照してください。

型ヒントで使用する型を指定しよう【アノテーション】

このソースコードが型ヒント通りに書けているかmypyを使ってチェックしてみましょう!

mypyの実行

コマンドラインを起動して先ほどのtestmypy.pyが保存されている場所に移動します。僕の場合は/Users/user/Desktop/Python/mypy/に保存したので以下のようにcdを使って移動します。

$ cd /Users/user/Desktop/Python/mypy/

そしたら、testmypy.pymypyコマンドで実行します。

$ mypy testmypy.py

実行すると以下のように型ヒント通り書かれていない箇所がエラーとして表示されます。

$ mypy testmypy.py 
testmypy.py:1: error: Incompatible types in assignment (expression has type "str", variable has type "Union[int, float]")
testmypy.py:2: error: List item 0 has incompatible type "int"; expected "str"
testmypy.py:2: error: List item 1 has incompatible type "int"; expected "str"
testmypy.py:2: error: List item 2 has incompatible type "int"; expected "str"
Found 4 errors in 1 file (checked 1 source file)

表示されたエラーを確認しつつ、型ヒント通りにソースコードを書き直して実行してみます。

testmypy.py

num: int | float = 3.14
vals: list[str] = ['a', 'b', 'c']

コマンドライン

$ mypy testmypy.py
Success: no issues found in 1 source file

Successが表示されたので型ヒント通りに書かれていることが確認できました。

ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

View Comments

Recent Posts

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

7か月 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

7か月 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

7か月 ago

【Unity】割合から数値に数値から割合に変換する

この記事では、割合から数値に変換する関数…

7か月 ago

【Python】抽象クラスを定義する方法

この記事では、Pythonで抽象クラスを…

7か月 ago