このモジュールは標準のPythonインタプリタで使われているオブジェクト
の型について、名前を定義しています(拡張モジュールで定義されている型を除
く)。このモジュールはlistiterator
型のようなプロセス中に例外
をふくまないので、"from types import *"のように使っても安全です。このモジュールの
将来のバージョンで追加される名前は、"Type"で終わる予定です。
関数での典型的な利用方法は、以下のように引数の型によって異なる動作をする 場合です:
from types import * def delete(mylist, item): if type(item) is IntType: del mylist[item] else: mylist.remove(item)
Python 2.2以降では、int() や str()のような ファクトリ関数は、型の名前となりましたので、typesを使用する 必要はなくなりました。上記のサンプルは、以下のように記述する事が 推奨されています。
def delete(mylist, item): if isinstance(item, int): del mylist[item] else: mylist.remove(item)
このモジュールは以下の名前を定義しています。
None
の型です。
True
とFalse
の型です。これは組み込み関数の
bool()のエイリアスです。
1
)。
1L
)。
1.0
)。
1.0j
)。
Pythonが複素数のサポートなしでコンパイルされていた場合には
定義されません。
'Spam'
)。
u'Spam'
)。
Pythonがユニコードのサポートなしでコンパイルされていた場合には
定義されません。
(1, 2, 3, 'Spam')
)。
[0, 1, 2, 3]
)。
{'Bacon': 1, 'Ham': 0}
)。
DictType
の別名です。
FunctionType
の別名です。
MethodType
の別名です。
BuiltinFunction
の別名です。
sys.stdout
のようなopenされたファイルオブジェクトの型です。
Ellipsis
の型です。
sys.exc_traceback
に含まれるようなトレースバックオブジェクトの型です。
tb
のtb.tb_frame
などです。
TypeType.__dict__
のような dictへのプロキシ型です。
NotImplemented
の型です。
FrameType.f_locals
や array.array.typecode
のような
PyGetSetDef
のある 拡張モジュールで定義されたオブジェクトの型です。
この定数は上のような拡張型がないPythonでは定義されません。
ポータブルなコードではhasattr(types, 'GetSetDescriptorType')
を
使用してください。
バージョン 2.5 で 新たに追加 された仕様です。
datetime.timedelta.days
のような PyMemberDef
のある
拡張モジュールで定義されたオブジェクトの型です。
この定数は上のような拡張型がないPythonでは定義されません。
ポータブルなコードではhasattr(types, 'MemberDescriptorType')
を
使用してください。
バージョン 2.5 で 新たに追加 された仕様です。
StringType
と
UnicodeType
を含むシーケンスです。
UnicodeType
は実行中の版のPythonに含まれている場合にだけ含まれるの
で、2つの文字列型のシーケンスを使うよりこれを使う方が移植性が高くなります。
例:
isinstance(s, types.StringTypes)
.
バージョン 2.2 で 新たに追加 された仕様です。