पायथन में "पैरामीटरयुक्त वर्ग" नहीं है (या आवश्यकता है), इसलिए पाइथन में--) में उनके उदाहरण प्रदान करना मुश्किल है। एक मेटाक्लास बस "कक्षा का वर्ग" होता है: सामान्यतः type
(जब तक आप पीई 2 में, object
, या कुछ अन्य अंतर्निर्मित प्रकार या अन्य नई शैली के वर्ग से विरासत में कक्षा को नई शैली बनाना याद रखें - - पुराने शैली के वर्ग पी 2 में विरासत आर्टेफैक्ट हैं, भाग्यशाली रूप से पी 3 में गायब हो गए हैं, और आपको आदर्श रूप से उनके बारे में भूल जाना चाहिए)। आप कई उन्नत उद्देश्यों के लिए एक कस्टम मेटाक्लास (आमतौर पर type
उपclassing) कर सकते हैं, लेकिन यह संभावना नहीं है कि आप कभी भी की आवश्यकता होगी (esp। उस पर विचार करते हुए, python 2.6 के बाद से, कस्टम मेटाक्लास की आवश्यकता के लिए उपयोग किए जाने वाले अधिकांश में से अधिक हो सकता है एक वर्ग सजावट के साथ और अधिक सरलता से किया)।
किसी भी कक्षा सी को देखते हुए, type(C)
इसका मेटाक्लास है।
एक पैरामीटरयुक्त वर्ग एक पूरी तरह से अलग अवधारणा है। निकटतम आप अजगर में इसे करने के लिए आ सकता है शायद कि अपने तर्कों के आधार पर बनाता है और एक वर्ग के रिटर्न एक कारखाने समारोह है:
def silly(n):
class Silly(object):
buh = ' '.join(n * ['hello'])
return Silly
Silly1 = silly(1)
Silly2 = silly(2)
a = Silly1()
print(a.buh)
b = Silly2()
print(b.buh)
hello
hello hello
फिर प्रिंट होगा, यह निश्चित रूप से है नहीं आप कुछ ' आपको अक्सर एक कक्षा या कुछ तर्कों से अलग होने की आवश्यकता होगी। वैसे भी, जैसा कि आप देख सकते हैं, कक्षाओं के वर्ग (एकेए मेटाक्लास) के साथ इसका कोई लेना-देना नहीं है, जो इस उदाहरण में हमेशा type
है (और लगभग हर यथार्थवादी उदाहरण में मैं सोच सकता हूं - मैंने अभी एक सरल देना चुना है उदाहरण, जहां ऐसा करने का मुद्दा यथार्थवादी और इसलिए जरूरी जटिल व्यक्ति की बजाय समझना मुश्किल है ;-)।
स्रोत
2010-08-16 18:48:17
मैंने दो दिन पहले पी 3 पर स्विच किया था, सोच रहा था कि चूंकि मैं अभी सिर्फ एक छात्र हूं, मुझे कल की 'हिप नई चीज़' सीखनी चाहिए। मान लीजिए कि एक स्मार्ट चाल थी :-) – yrsnkd
+1। अच्छे खर्च। –
+1 हमेशा के रूप में उत्कृष्ट स्पष्टीकरण। – katrielalex