İşte bir python oturumu.Alt sınıfta çağrılmayan meta sınıfı
>>> 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
>>>
Sınıf XI Z._new__ bunun için çağrılacak bekliyoruz ve olmuyor iki çizgi, (metaclass devralınan olarak?) Yazdırmak tanımladıktan sonra
Ah, tamam işte. Ama 'süper' (Z, cls) 'new__' dönüşü olmamalıdır' type .__ class __. New 'whis 'type' üzerinden yeni bir sınıf oluşturmakla aynı olması gereken type .__ new__' ile eşdeğerdir? – agiliq
Aslında aynı değil, şimdi cevabımda bunu ele alıyorum. Super, 'type .__ new__' yöntemini çağırır, ancak doğru 'cls' argümanını kullanabiliriz; – nikow