Python のメタクラスについて学習しようとしています。主なアイデアはわかりましたが、メカニズムを起動できないようです。__metaclass__
私が理解しているように、グローバルまたはクラスレベルで M に設定することにより、クラス K を構築するときに M をメタクラスとして指定できます。これをテストするために、次のプログラムを作成しました。
p = print
class M(type):
def __init__(*args):
type.__init__(*args)
print("The rain in Spain")
p(1)
class ClassMeta:
__metaclass__ = M
p(2)
__metaclass__ = M
class GlobalMeta: pass
p(3)
M('NotMeta2', (), {})
p(4)
ただし、実行すると、次の出力が得られます。
C:\Documents and Settings\Daniel Wong\Desktop>python --version パイソン 3.0.1 C:\Documents and Settings\Daniel Wong\Desktop>python meta.py 1 2 3 スペインの雨 4
1と2の後に「スペインの雨」を見るべきではないですか?何が起きてる?