組み込み関数 type

 type(object)

 今まで型を確認してたので、もう分かっていると思います。object の型を返します。

#coding: shift-jis

a = 100
print type(a)
s = "abcde"
print type(s)
b = ('A', 'B', 'C')
print type(b)

raw_input()

出力画面:
 <type 'int'>
 <type 'str'>
 <type 'tuple'>

 新しいtype関数の使い方

 type(文字列name, タプルbases, 辞書dict)

 3つの引数で呼び出された場合には type関数は別の関数として扱われます。クラスの定義が出来ます。文字列nameのクラスで、タプルbasesに指定されたクラスを基底クラスにして、辞書dictに指定された変数群をアプレットとして持つクラスです。
なんかよくわかりませんね。

今までの表現だと
class ClassA( object)
  s='abcde'
  a=123

type関数を使うと
type('ClassA', ( object,), dict(s='abcde',a=123))

何がいいんだか良く分かりませんが、実際試してみましょう。

##coding: shift-jis

ClassB =type('ClassA', ( object,), dict(s='abcde',a=123))

print ClassB.a ←ClassBはClassAのインスタンスです。
print ClassB.s

ClassC = ClassB ←唐突ですが、クラスは参照渡しです。
ClassC.a = 345

print ClassB.a
print ClassC.a

raw_input()

出力画面:
123
abcde
345 ←参照渡しなので、ClassBの値も変わっちゃいます。
345