मेरे पास एक मॉड्यूल है जिसका उद्देश्य "निब" नामक कक्षा को परिभाषित करना है। (और कुछ संबंधित वर्ग भी।) मुझे मॉड्यूल को कैसे कॉल करना चाहिए? "निब"? "Nibmodule"? और कुछ?मॉड्यूल के लिए पाइथन नामकरण सम्मेलन
उत्तर
बस निब। पूंजी एन के साथ कक्षा निब नाम दें। सम्मेलन और अन्य शैली सलाह नामकरण के लिए, पाइथन शैली मार्गदर्शिका PEP 8 देखें।
मैं इसे nib.py कहूंगा। और मैं कक्षा निब नाम भी दूंगा।
एक बड़ी पायथन परियोजना में मैं काम कर रहा हूं, हमारे पास मूल रूप से एक महत्वपूर्ण वर्ग को परिभाषित करने वाले बहुत सारे मॉड्यूल हैं। कक्षाओं का नाम पूंजी पत्र से शुरू किया जाता है। मॉड्यूल को लोअरकेस में कक्षा की तरह नामित किया गया है। इससे निम्नलिखित आयात होते हैं:
from nib import Nib
from foo import Foo
from spam.eggs import Eggs, FriedEggs
यह जावा तरीके को अनुकरण करने जैसा है। एक प्रति फ़ाइल एक वर्ग। लेकिन अतिरिक्त लचीलापन के साथ, यदि आप समझ में आता है तो आप एक ही फ़ाइल में एक और कक्षा जोड़ सकते हैं।
निब ठीक है। यदि संदेह है, तो पाइथन शैली मार्गदर्शिका देखें।
PEP 8 से:
पैकेज और मॉड्यूल नाम मॉड्यूल छोटा है, सभी लोअरकेस नाम होना चाहिए। मॉड्यूल नाम में अंडरस्कोर का उपयोग किया जा सकता है यदि यह पठनीयता में सुधार करता है। पायथन पैकेज में छोटे, सभी-लोअरकेस नाम भी होना चाहिए, हालांकि अंडरस्कोर का उपयोग निराश है।
के बाद से मॉड्यूल नामों को दर्ज करने के लिए मैप की जाती हैं, और कुछ फाइल सिस्टम केस संवेदी है और लंबे समय के नाम काट-छांट कर रहे हैं, यह महत्वपूर्ण है कि मॉड्यूल नाम काफी कम होने के लिए चुना जाना - इस यूनिक्स पर एक समस्या नहीं होगी , लेकिन यह समस्या तब हो सकती है जब कोड पुराने मैक या विंडोज संस्करण, या डॉस में ले जाया जाता है।
एक विस्तार मॉड्यूल सी या सी ++ में लिखा एक साथ अजगर मॉड्यूल है कि एक उच्च स्तर प्रदान करता है (उदा अधिक वस्तु उन्मुख) इंटरफेस, C/C++ मॉड्यूल एक अग्रणी अंडरस्कोर न हो (उदा _socket)।
उहम ... यह मुझे पेट में हिट करता है। मैं संकुल/मॉड्यूल में अंडरस्कोर उपसर्ग का उपयोग पूरी तरह से अलग (मॉन्टी पायथन संदर्भ इरादा) के लिए कर रहा हूं। –
मुझे पता है कि मेरा समाधान पाइथोनिक दृष्टिकोण से बहुत लोकप्रिय नहीं है, लेकिन मैं कक्षा के नाम से मॉड्यूल के साथ एक मॉड्यूल-> एक वर्ग के जावा दृष्टिकोण का उपयोग करना पसंद करता हूं। मैं पाइथन शैली के पीछे कारण समझता हूं, लेकिन मुझे बहुत सारी कक्षाएं रखने वाली बहुत बड़ी फ़ाइल होने का बहुत शौक नहीं है। फोल्डिंग के बावजूद मुझे ब्राउज़ करना मुश्किल लगता है।
एक और कारण संस्करण नियंत्रण है: एक बड़ी फ़ाइल होने का मतलब है कि आपकी प्रतिबद्धता उस फ़ाइल पर ध्यान केंद्रित करती है। इससे संभावित रूप से सुलझाने के लिए उच्च मात्रा में संघर्ष हो सकते हैं। आप अतिरिक्त लॉग जानकारी भी खो देते हैं कि आपकी प्रतिबद्धता विशिष्ट फ़ाइलों को संशोधित करती है (इसलिए विशिष्ट कक्षाएं शामिल हैं)। इसके बजाय आप मॉड्यूल फ़ाइल में संशोधन देखते हैं, केवल यह समझने के लिए प्रतिबद्ध टिप्पणी के साथ कि संशोधन क्या किया गया है।
यदि आप पाइथन दर्शन पसंद करते हैं, तो अन्य पोस्ट के सुझावों के लिए जाएं। यदि आप इसके बजाय जावा जैसी दर्शन पसंद करते हैं, तो एनआईबीटीवी युक्त कक्षा निब बनाएं।
उल्लिखित मुद्दे संपादक में सीमाओं और संस्करण नियंत्रण उपकरण के उपयोग में हैं, भाषा या प्रोग्रामिंग शैली से नहीं। प्रति वर्ग एक वर्ग कोड संरचना के लिए हानिकारक है। नेविगेशन की सहायता के लिए अपने वर्गों का सारांश देखने के लिए 'स्पाइडर' या एक समान संपादक का उपयोग करें, और दोनों फाइलों को एक ही फ़ाइल के साथ खोलें। इसके अलावा, कृपया पीईपी 8 पढ़ें। पायथन लिथॉन लिखने के लिए है, और जावा के लिए जावा, लेकिन पाइथन जावा लिखने के लिए * नहीं * है। –
@IoannisFilippidis: अगर मुझे कोड के आकार में एक ही फाइल में एक मॉड्यूल के लिए सभी वर्गों को सामान्य रूप से प्रबंधित करना होता है, तो मैं फ़ाइल को खोलने में भी सक्षम नहीं होता, अन्य सहकर्मियों के साथ टकराव स्कीरकेट होगा, और मेरा मालिक थूक जाएगा मेरा चेहरा (रूपक रूप से, यह है) इसे प्रस्तावित करने के लिए। एक एकल फ़ाइल दृष्टिकोण पैमाने पर नहीं है, पीईपी -8 या नहीं। –
@StefanoBorini: PEP8 एक फ़ाइल दृष्टिकोण के लिए कॉल नहीं करता है। प्रति वर्ग एक वर्ग और एक फ़ाइल प्रति (कोड इकाई) एक बहुत व्यापक स्पेक्ट्रम के दो चरम सीमाएं हैं। यदि आप प्रति फ़ाइल एक फ़ाइल के साथ अप्रबंधनीय रूप से बड़ी फ़ाइल आकार देख रहे हैं, तो आपको शायद मॉड्यूल में पैकेज को तोड़ने के अपने दृष्टिकोण को संशोधित करने पर विचार करना चाहिए। –
foo अजगर में मॉड्यूल जावा में एक फू वर्ग फ़ाइल के बराबर होगा
या
foobar अजगर में मॉड्यूल में एक FooBar वर्ग फ़ाइल के बराबर होगा जावा
- 1. हास्केल मॉड्यूल नामकरण सम्मेलन
- 2. पाइथन वैरिएबल नामकरण सम्मेलन
- 3. सजावटी में पाइथन नामकरण सम्मेलन
- 4. सी # नामकरण सम्मेलनों के लिए नामकरण सम्मेलन
- 5. पदानुक्रमित एकाधिक मॉड्यूल परियोजनाओं के लिए मेवेन नामकरण सम्मेलन
- 6. धागे के लिए नामकरण सम्मेलन?
- 7. नामकरण सम्मेलन?
- 8. Django विचारों के लिए नामकरण सम्मेलन?
- 9. जेएसओएन क्रियाओं के लिए एमवीसी नामकरण सम्मेलन
- 10. आम पैटर्न के लिए नामकरण सम्मेलन?
- 11. राज्य/क्षेत्र/प्रांत के लिए नामकरण सम्मेलन
- 12. आंशिक कक्षा फ़ाइलों के लिए नामकरण सम्मेलन
- 13. रेल माइग्रेशन के लिए नामकरण सम्मेलन
- 14. डीबी ट्रिगर्स के लिए नामकरण सम्मेलन
- 15. एचटीएमएल तत्वों के लिए नामकरण सम्मेलन
- 16. क्या MySQL के लिए नामकरण सम्मेलन है?
- 17. एचटीएमएल: आईडी विशेषताओं के लिए नामकरण सम्मेलन
- 18. नई परियोजनाओं के लिए नामकरण सम्मेलन
- 19. स्कैला स्थिरांक के लिए नामकरण सम्मेलन?
- 20. वीबीएनईटी निजी क्षेत्रों के लिए नामकरण सम्मेलन
- 21. कमांड और घटनाओं के लिए नामकरण सम्मेलन
- 22. अद्वितीय बाधा के लिए नामकरण सम्मेलन
- 23. विकल्पों के लिए स्कैला नामकरण सम्मेलन
- 24. रूबी मणि नामकरण सम्मेलन
- 25. एक्सएएमएल संसाधन नामकरण सम्मेलन
- 26. रेडिस कुंजी नामकरण सम्मेलन?
- 27. माइक्रोसॉफ्ट वीबी.नेट नामकरण सम्मेलन
- 28. प्ले फ्रेमवर्क - सीआरयूडी नामकरण सम्मेलन
- 29. .NET परीक्षण नामकरण सम्मेलन
- 30. आईओएस प्रतिनिधि नामकरण सम्मेलन -
क्या अधिकांश पाइथन परियोजनाएं इस सम्मेलन का पालन करती हैं? क्योंकि मुझे लगता है कि अंतर्निहित कक्षाएं लोअरकेस में हैं, उदा। सूची, स्ट्रिंग, आदि –
आप अवलोकन w.r.t. बिल्ड-इन प्रकार सही है। ये निश्चित रूप से अपवाद हैं, हालांकि। मानक पुस्तकालय * में परिभाषित अधिकांश अन्य वर्ग * पूंजीकृत हैं। – Stephan202
मैंने सोचा कि यह सही सम्मेलन था, लेकिन इसके साथ एक अंतर्निहित समस्या है, कम से कम ऐसा लगता है। मान लें कि मेरे पास 'क्लाइंट' नामक एक कक्षा है, और समझ में आता है कि मैं अक्सर इसके उदाहरण बनाउंगा कि मैं 'क्लाइंट' को कॉल करना चाहता हूं। लेकिन आपके सम्मेलन के अनुसार, मॉड्यूल का नाम 'क्लाइंट' होगा, और इसलिए मुझे हमेशा अपने उदाहरणों को 'client_instance' जैसे अप्राकृतिक नाम देना होगा। आप इस समस्या के बारे में क्या सोचते हैं? – Ray