] जिस तरह कक्षाएं उदाहरण बनाती हैं, मेटाक्लास कक्षाएं बनाते हैं। वे वर्ग निर्माण प्रक्रिया पर नियंत्रण की एक परत प्रदान करते हैं, जो वर्ग व्यवहार और विशेषताओं के अनुकूलन की अनुमति देता है। इसका मतलब यह है कि कक्षाएं स्वयं वर्ग कीवर्ड का उपयोग करके कक्षा के 'विवरण' से बनाए गए उदाहरण हैं। इस प्रकार, निम्नलिखित कथन ऑब्जेक्टक्रीटोर नाम का एक वर्ग ऑब्जेक्ट बनाता है:
वर्ग ऑब्जेक्टक्रेटर (ऑब्जेक्ट):
पास
metaclasses (कक्षाओं का वर्ग)
# पायथन 2 क्लास फू (ऑब्जेक्ट, __metaclass __ = mymetaclass): ... # पायथन 3 क्लास फू (ऑब्जेक्ट, मेटाक्लास = mymetaclass): ...
class ObjectCreator(object): pass
वर्ग अपरट्रैमेटाक्लास (प्रकार): def __new __ (cls, clsname, आधार, attrs): Uppercase_attrs = { attr.startswith ('__') और Attr.upper (): v Attrs.items () में v, v के लिए } रिटर्न सुपर () .__ नया __ (cls, clsname, bases, uppercase_attrs)
Foo = type('Foo', (), {'bar': True}) print(Foo) #, फिर, आप इस मेटाक्लास का उपयोग अपरकेस विशेषताओं के साथ एक वर्ग बनाने के लिए कर सकते हैं:print(Foo.bar) # True
MetaClasses का उपयोग क्यों करें? उदाहरण के लिए, Django का ORM आपको Charfield और Integerfield जैसे सरल स्टेटमेंट का उपयोग करके डेटाबेस फ़ील्ड को परिभाषित करने की अनुमति देने के लिए मेटाक्लास का उपयोग करता है। हालांकि, यह ध्यान रखना महत्वपूर्ण है कि वे जटिल हैं और इसका उपयोग केवल तब किया जाना चाहिए जब आवश्यक जटिलताओं से बचने के लिए आवश्यक हो।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3