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】yield from の使い方

    この記事では、yield fromの使い…

    3日 ago

    【Unity】BGMやSEを再生する方法

    この記事では、UnityでBGMやSEな…

    2週間 ago

    【Unity】オブジェクトが見えているかどうかを判別する方法

    この記事では、特定のオブジェクトがカメラ…

    3週間 ago

    【Unity】アセットストアにあるアセットを追加・使用する方法

    この記事では、Unityのアセットストア…

    4週間 ago

    【Unity】値が変更された際に処理を実行したい

    この記事では、値が変更された際に何かしら…

    4週間 ago

    【Unity】クラスのパラメータをインスペクターから調整したい

    この記事では、定義したクラスをインスペク…

    1か月 ago