python 3.5コードでmypy
を使用していますが、次のようなメッセージがたくさん表示されます:
ファイル:行番号:エラー:変数の型注釈が必要です
しかし、私はpython 3.6
でのみ変数注釈の構文を導入したpython 3.6
の新機能について読みました:
PEP 484は、関数パラメーターの型注釈、別名型ヒントの標準を導入しました。このPEPは、Python=に構文を追加して、クラス変数やインスタンス変数を含む変数のタイプに注釈を付けます...
また、python 3.5
プログラムの変数に変数型注釈を追加しようとすると、SyntaxError
がスローされます。
私は何をすべきか?このメッセージを無視しますか? python 3.6
に更新しますか? mypy
がpython 3.6
で記述されているようにコードをコンパイルするのはなぜですか?
あなたのコードはmypy
がしようとする型推論を混乱させています。たとえば、次のスニペットのように名前を再定義しても、mypyはf
のタイプを推測できません。
f = []
f = {}
f
のタイプが何であるかを理解できないため、不平を言い、変数の注釈が必要であると通知します。タイプヒントを明示的に指定できます。
mypy
は3.6
でコンパイルされません。このエラーは両方のバージョンに存在します。違いは、それに取り組む方法です。
コメントを使用して変数の型に注釈を付ける
x = 5 # type: int
my_list = [] # type: List[str]
チートシートを確認する
空白の値がある場合は、変数のタイプを定義する必要があります。例えば:
my_val: str = ""
my_val1: dict = {}
my_val2: list = []
など。あなたの場合、私はpythonのバージョンを3.6に変更することを検討します。更新コードが必要です。