मैं पाइथन में मेटाक्लास के बारे में जानने की कोशिश कर रहा हूं। मुझे मुख्य विचार मिलता है, लेकिन मैं तंत्र को सक्रिय नहीं कर सकता। जैसा कि मैं इसे समझता हूं, आप वैश्विक या कक्षा स्तर पर एम को __metaclass__
सेट करके कक्षा के निर्माण के दौरान मेटाक्लास के रूप में निर्दिष्ट करने के लिए एम निर्दिष्ट कर सकते हैं। यह परीक्षण बाहर करने के लिए, मैं निम्नलिखित प्रोग्राम लिखा है:क्या __metaclass__ पायथन में मेटाक्लास के उपयोग को मजबूर नहीं करना चाहिए?
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 Python 3.0.1 C:\Documents and Settings\Daniel Wong\Desktop>python meta.py 1 2 3 The rain in Spain 4
मुझे नहीं देखना चाहिए "स्पेन में बारिश" के बाद 1 और 2? यहाँ क्या चल रहा है?
डबल नकारात्मक "नहीं ... बल नहीं है" पार्स करना मुश्किल है। क्या आप सवाल ठीक कर सकते हैं? –
प्रतिक्रिया के लिए धन्यवाद। मुझे लगता है कि अब समझना आसान होना चाहिए। – allyourcode