Pythonのtypesとassert

Pythonで型チェックの方法です。

types

型の取得には組み込み関数typeを使います。

>>> from types import *
>>> type(1) == IntType
True
>>> type('') == StringType
True
>>> type([]) == ListType
True

assert

C言語など他の言語と同様Pythonにもassertがあります。
assertの直後に評価したい式を書きます。

>>> assert True
>>> assert False
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AssertionEror

型チェック

typesassertを組み合わせて型チェックができます。

>>> x = 1
>>> assert type(x) == IntType
>>> try:
...   assert type(x) == StringType, 'type error'
... except AssertionError, e:
...   print(e.message)
...
type error

注) この記事はPython2向けの内容となっています。

Python3ではtypesの代わりに

>>> type(1) == int
True
>>> type('') == str
True
>>> type([]) == list
True

のような感じで使えます。

ちなみに、intstrlistなどに使える値は

print([t.__name__ for t in __builtins__.__dict__.values() if isinstance(t, type)])

で一覧表示できます。

参考リンク

python – List of classinfo Types – Stack Overflow
https://stackoverflow.com/questions/51567356/list-of-classinfo-types

関連記事

Python製CGIのデバッグ
ローカルPCでの開発中は逐一エラーを確認しながらデバッグできますが、サーバーにアップロードしてしまうと、デバッグが大変になってしまいます。 そういう時は、cgitbで簡単にデバッグできます。 #!/usr/bin/env python import cgitb cgitb.enable() # 以下、実行したいスクリプト raise Exception('error') こ...

2 thoughts on “Pythonのtypesとassert

  1. moon

    > assert type(x) == StringType, ‘type error’
    で==の個所をStr型以外はエラーとしたい時はどう記述すれば良いでしょうか?

  2. mynote

    assert type(x) != StringType, ‘type error’
    とすれば、Str型以外でAssertionErrorになるかと思います。
    (質問の意図を勘違いしていなければいいのですが、もし何かありましたらコメントしてください。)

コメントを残す

メールアドレスが公開されることはありません。