メタクラス(エキpy)
メタクラスとは他の型(クラス)を定義する型(クラス)
インスタンスはクラスのインスタンスで、クラスはtypeのインスタンス(図5-1)
すべてのクラス定義の基本型は組み込みのtypeクラス (Kindle の位置No.3793-3794)
type()の呼び出しで<class 'int'>と返るのも関係している?
新規のメタクラスはtypeのサブクラス
このメタクラスのインスタンスがクラス
(メタクラスのインスタンスの)クラスのインスタンスがインスタンス(図5-2)
メタクラスを作るときに定義するメソッド
__new__
「クラスオブジェクトを生成する責任を持」つ
__new__(mcs, name, bases, namespace)
第1引数はメタクラスオブジェクト
__prepare__
__init__
__new__()の生成後に追加でクラスオブジェクトの初期化を実行します (Kindle の位置No.3835)
__init__(cls, name, bases, namespace, **kwargs)
第1引数はメタクラスオブジェクトではなく、生成済みのクラスオブジェクト
メタクラスの__init__()はすべてのサブクラスで呼び出される (Kindle の位置No.3840)
__call__
is subclass ofとis instance of