यहां एक अजगर सत्र है।मेटाक्लास को उप-वर्गों में नहीं कहा जा रहा है
>>> 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
>>>
बाद मैं परिभाषित ग्यारहवीं कक्षा की उम्मीद Z._new__ इसके लिए कहे जाने के, और दो लाइन है, जो नहीं हो रहा है, (रूप metaclass विरासत में मिला रहे हैं?) मुद्रित करने के लिए
आह, ठीक है, वह काम। लेकिन 'सुपर (जेड, सीएलएस) वापस नहीं करना चाहिए .__ new__' 'टाइप .__ वर्ग __ के बराबर हो। नया' whis 'टाइप .__ new__' के बराबर है जो' टाइप' के माध्यम से एक नई कक्षा बनाने के समान होना चाहिए? – agiliq
यह वास्तव में वही नहीं है, अब मैं इसे अपने उत्तर में संबोधित करता हूं। सुपर 'टाइप .__ new__' विधि को कॉल करता है, लेकिन फिर हम सही' cls' तर्क का उपयोग कर सकते हैं, जो संभव नहीं है अगर हम सीधे 'टाइप'' कहते हैं। – nikow