Python の mypy でエラーを一行だけ無視する2022年10月29日 01時35分45秒

mypy は Python の静的アナライザ。

少し厳し目の判別をしてくれるが、目に付きづらいバグなどを検出できるので、有効にしている。

しかし、時折り融通が効かず、一行だけ無効にする必要があったりする。個人的に問題が出るのは、関数の引数などで複数の型を受け取れる様にした時等に問題になる。

例えば、int 型と list[int] 型のどちらでも受けると、list[int] 型に統一して処理したいのだが、そこでエラーを出されてしまう。

次のは、union[None, int, list[int]] 型の時のエラーの例。

def func(ids: Union[None, int, List[int]]):
    if type(ids) == int:
        ids = [ids]
少し書き換えてちょこちょこ試行錯誤していると、「List item 0 has incompatible type "Union[int, List[int]]"; expected "int"」や「Argument 1 to "int" has incompatible type "Union[int, List[int]]"; expected "Union[str, bytes, SupportsInt, SupportsIndex, SupportsTrunc]"」等が出てくる。

以下の様にして特定の行のみで無効にして対処する。

ids = [ids] # type: ignore

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2022/10/29/9536634/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。