"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पायथन मेटाक्लास कार्य सिद्धांत और वर्ग निर्माण और अनुकूलन

पायथन मेटाक्लास कार्य सिद्धांत और वर्ग निर्माण और अनुकूलन

2025-04-17 को पोस्ट किया गया
ब्राउज़ करें:785

] जिस तरह कक्षाएं उदाहरण बनाती हैं, मेटाक्लास कक्षाएं बनाते हैं। वे वर्ग निर्माण प्रक्रिया पर नियंत्रण की एक परत प्रदान करते हैं, जो वर्ग व्यवहार और विशेषताओं के अनुकूलन की अनुमति देता है। इसका मतलब यह है कि कक्षाएं स्वयं वर्ग कीवर्ड का उपयोग करके कक्षा के 'विवरण' से बनाए गए उदाहरण हैं। इस प्रकार, निम्नलिखित कथन ऑब्जेक्टक्रीटोर नाम का एक वर्ग ऑब्जेक्ट बनाता है:

How Do Metaclasses Work in Python to Create and Customize Classes?
वर्ग ऑब्जेक्टक्रेटर (ऑब्जेक्ट): पास

। टाइप फ़ंक्शन आपको अपने नाम, आधारों और विशेषताओं को तर्क के रूप में प्रदान करके एक वर्ग को परिभाषित करने की अनुमति देता है। यह एक नई बनाई गई क्लास ऑब्जेक्ट लौटाता है। प्रिंट (foo) # प्रिंट (foo.bar) # true

metaclasses (कक्षाओं का वर्ग)

अब, हम मेटाक्लास में आते हैं। वे 'सामान' हैं जो इन वर्ग वस्तुओं को बनाता है। जिस तरह कक्षाएं उदाहरण बनाती हैं, मेटाक्लास कक्षाएं बनाते हैं। वे प्रभावी रूप से उन पर्दे के पीछे की कक्षाएं हैं जो पायथन स्वचालित रूप से क्लास कीवर्ड का उपयोग करके परिभाषित कक्षाएं बनाने के लिए उपयोग करते हैं। पायथन 3 में, यह आधार वर्गों की सूची में एक कीवर्ड तर्क द्वारा प्रतिस्थापित किया गया है।

# पायथन 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
, फिर, आप इस मेटाक्लास का उपयोग अपरकेस विशेषताओं के साथ एक वर्ग बनाने के लिए कर सकते हैं:

बार = 'बीआईपी' प्रिंट (foo.bar) # 'bip'

MetaClasses का उपयोग क्यों करें? उदाहरण के लिए, Django का ORM आपको Charfield और Integerfield जैसे सरल स्टेटमेंट का उपयोग करके डेटाबेस फ़ील्ड को परिभाषित करने की अनुमति देने के लिए मेटाक्लास का उपयोग करता है। हालांकि, यह ध्यान रखना महत्वपूर्ण है कि वे जटिल हैं और इसका उपयोग केवल तब किया जाना चाहिए जब आवश्यक जटिलताओं से बचने के लिए आवश्यक हो।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3