- 46 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 00:26:37 ]
- class文を実行するとメタクラスが必ず関わる。
メタクラスは 旧式クラスはtypes.ClassType 新式クラスはtype 自分でtypeをサブクラス化してカスタムメタクラスを作る事も可能。 クラス定義が読み込まれる際、__metaclass__ が定義されていれば、 type() の代わりに __metaclass__ が指している 呼び出し可能オブジェクトが呼び出される。 __metaclass__ この変数は name、bases、および dict を引数として 取るような任意の呼び出し可能オブジェクトにできる。 【メタクラスの決定順】 dict['__metaclass__'] があればそれを使います。 それ以外の場合で、最低でも一つ基底クラスを持っているなら、 基底クラスのメタクラス (__class__ 属性を探し、なければ 基底クラスの型) を使います。 それ以外の場合で、__metaclass__ という名前のグローバル変数 があれば、それをつかいます。 それ以外の場合には、旧形式のメタクラス (types.ClassType) を使います。
|

|