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
型チェック
types
とassert
を組み合わせて型チェックができます。
>>> 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
のような感じで使えます。
ちなみに、int
、str
、list
などに使える値は
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')
こ...
> assert type(x) == StringType, ‘type error’
で==の個所をStr型以外はエラーとしたい時はどう記述すれば良いでしょうか?
assert type(x) != StringType, ‘type error’
とすれば、Str型以外でAssertionErrorになるかと思います。
(質問の意図を勘違いしていなければいいのですが、もし何かありましたらコメントしてください。)