पायथन में कक्षाएं बनाम मॉड्यूल


19

पायथन में कई मॉड्यूल (जैसे re) हैं जो क्रियाओं का एक विशिष्ट सेट करते हैं। आप इस मॉड्यूल के कार्यों को कॉल कर सकते हैं और परिणाम प्राप्त कर सकते हैं, और एक पूरे के रूप में मॉड्यूल के पीछे एक विचार है (इस मामले में, नियमित रूप से व्यवहार करना)।

कक्षाएं लगभग एक ही बात करते हैं, लेकिन वे भी मॉड्यूल की तुलना में काफी अधिक गुणों का उपयोग करने लगते हैं।

मॉड्यूल किन तरीकों से कक्षाओं से अलग हैं? (मुझे पता है कि मैं एक मॉड्यूल को उप-वर्ग नहीं कर सकता, लेकिन क्या यह है?) मुझे एक मॉड्यूल के बजाय एक वर्ग का उपयोग कब करना चाहिए?


क्या आप जानते हैं कि जब आप मॉड्यूल विधियों को कॉल करते हैं, तो कभी-कभी मॉड्यूल सिर्फ एक वर्ग के उदाहरण से गुजर रहा होता है? उदाहरण के लिए randomमॉड्यूल देखें । मुझे याद नहीं है कि क्या यह सच है re, हालांकि।
jscs

1
जानने के लिए संबंधित अवधारणा - मॉड्यूल बनाम पैकेज?
RBT

जवाबों:


12

एक अजगर मॉड्यूल पुन: प्रयोज्य कोड को एनकैप्सुलेट करने के लिए एक पैकेज के अलावा कुछ भी नहीं है। मॉड्यूल आमतौर पर, लेकिन हमेशा नहीं, __init__.pyइसके अंदर एक फ़ाइल के साथ एक फ़ोल्डर में रहते हैं । मॉड्यूल में फ़ंक्शंस हो सकते हैं लेकिन कक्षाएं भी। importकीवर्ड का उपयोग करके मॉड्यूल आयात किए जाते हैं ।

पायथन के पास एक फाइल में परिभाषाएं डालने और उन्हें स्क्रिप्ट में या दुभाषिया के एक इंटरएक्टिव उदाहरण में उपयोग करने का एक तरीका है। ऐसी फाइल को एक मॉड्यूल कहा जाता है; एक मॉड्यूल से परिभाषाएँ अन्य मॉड्यूल या मुख्य मॉड्यूल में आयात की जा सकती हैं।

इन लिंक पर पायथन मॉड्यूल के बारे में और जानें:

https://docs.python.org/2/tutorial/modules.html (पायथन 2) https://docs.python.org/3/tutorial/modules.html (पायथन 3)

दूसरी ओर, कक्षाएं आपके मुख्य एप्लिकेशन कोड या आपके एप्लिकेशन द्वारा आयात किए गए मॉड्यूल के अंदर परिभाषित की जा सकती हैं। कक्षाएं ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग का कोड हैं और इसमें गुण और विधियाँ शामिल हो सकती हैं।

इन लिंक पर पायथन कक्षाओं के बारे में अधिक जानें:

https://docs.python.org/2/tutorial/classes.html (पायथन 2) https://docs.python.org/3/tutorial/classes.html (पायथन 3)


3
इसलिए किसी मॉड्यूल में एकल वर्ग का होना कोई बुरी बात नहीं है, भले ही उस कक्षा में केवल कार्य हों? मुझे लगता है कि उस स्थिति में मुझे आमतौर पर एक वर्ग बनाने के बिना एक मॉड्यूल बनाना चाहिए। क्या मॉड्यूल के बजाय कक्षाओं का उपयोग करने के लिए एक अंतर्निहित नियम है? (यही मैं पूछने की कोशिश कर रहा हूं ... क्या मुझे इसे और अधिक स्पष्ट करने के लिए अपने प्रश्न को संपादित करना चाहिए?)
प्रो क्यू

6
आप एक वर्ग के कई उदाहरण बना सकते हैं, लेकिन आप एक मॉड्यूल के उदाहरण नहीं बना सकते हैं। आप स्टैटिक क्लासेस या सिंगलटन के लिए मॉड्यूल्स की तुलना कर सकते हैं।
एनेको अलोंसो

1
मॉड्यूल हमेशा एक __init__.pyफ़ाइल के साथ एक फ़ोल्डर में नहीं रहते हैं ।
मल्टीगुडवर्स

1
@ProQ पायथन जैसी भाषाओं में जहाँ आप कक्षाओं के बजाय मॉड्यूल में कार्य कर सकते हैं (जैसा कि, विरोध, जावा) यह आमतौर पर मॉड्यूल स्तर पर स्थिर कार्यों को रखने के लिए अच्छा रूप है। कक्षाएं अपने स्वयं के राज्य के साथ उदाहरण देती हैं।
तुर्कसारमा

-2

यदि यह शुद्ध कार्यों का एक गुच्छा है, उदाहरण के लिए re, मैंने उन्हें एक मॉड्यूल में रखा। मैं एक वर्ग का उपयोग करता हूं जब मुझे पता होता है कि मैं उस कोड के साथ रखना चाहता हूं (जैसे कि एक फ़ाइल जो एक बार में पढ़ी जाती है, लेकिन जिसका डेटा कई फ़ंक्शन द्वारा उपयोग किया जाता है)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.