9
這是一個python會話。Metaclass不在子類中調用
>>> 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__被調用它,並打印兩行,這是不會發生,(如元類被繼承?)
啊,好的,那個工作。但是不應該'返回super(Z,cls).__ new__'等價於'type .__ class __。new' whis等價於'type .__ new__',它應該和'type'創建一個新類相同? – agiliq 2009-11-21 06:17:08
這實際上是不一樣的,我現在在我的回答中解決這個問題。 Super會調用'type .__ new__'方法,但是我們可以使用正確的'cls'參數,如果我們直接調用'type',這是不可能的。 – nikow 2009-11-21 09:24:07