今の世の中、オブジェクト指向プログラミングは当たり前だ。 しかし、じゃ「メタクラスは?」と聞かれて即答できる人は、ある程度の勉強家だろう。 なぜか……昨今の「オブジェクト指向プログラミング言語」の主流格であるC++にもJavaにも、メタクラスは存在しないからだ。 無論、Smalltalkerなら「当然」なので、鼻で笑われるだろう。 なんせ、クラスを作るには、メタクラスのインスタンスを作らなければならないからだ。 つまり、メタクラスとは、クラスオブジェクトのクラス、すなわち「クラスのクラス」だ。 正式には、あるオブジェクトがあると、そのクラスのクラスがメタクラス、ということになる。 クラス自身がオブジェクトである言語でなければ、メタクラスが存在するわけない、という意味はご了解できただろうか。 Perl風Smalltalkを標榜するRubyには、メタクラスは当然ある。 では、我らがPython

