ここはPythonセッションです。 (メタクラスが継承されるよう?)サブクラスでメタクラスが呼び出されない
>>> class Z(type):
def __new__(cls, name, bases, attrs):
print cls
print name
return type(name, bases, attrs)
...
>>> class Y(object):
__metaclass__ = Z
...
<class '__main__.Z'>
Y
>>> class X(Y):
... pass
...
>>> class W(Y):
... __metaclass__ = Z
...
<class '__main__.Z'>
W
>>>
私はクラスXIを定義した後は、Z._new__はそれのために呼び出されることを期待し、起きていない2行を、印刷する
ああ、そうです。しかし、 'super。(Z、cls).__ new__'を' type .__ class __と同じにするべきではありません。新しい 'whisは' type .__ new__'と同じです。これは 'type'で新しいクラスを作るのと同じでしょうか? – agiliq
それは実際には同じではない、私は今これを私の答えで述べる。 Superは 'type .__ new__'メソッドを呼び出しますが、適切な' cls'引数を使用することができます。これは 'type'を直接呼び出すだけでは不可能です。 – nikow