2009-04-02 16 views
78

मेरे पास एक मॉड्यूल है जिसका उद्देश्य "निब" नामक कक्षा को परिभाषित करना है। (और कुछ संबंधित वर्ग भी।) मुझे मॉड्यूल को कैसे कॉल करना चाहिए? "निब"? "Nibmodule"? और कुछ?मॉड्यूल के लिए पाइथन नामकरण सम्मेलन

उत्तर

95

बस निब। पूंजी एन के साथ कक्षा निब नाम दें। सम्मेलन और अन्य शैली सलाह नामकरण के लिए, पाइथन शैली मार्गदर्शिका PEP 8 देखें।

+2

क्या अधिकांश पाइथन परियोजनाएं इस सम्मेलन का पालन करती हैं? क्योंकि मुझे लगता है कि अंतर्निहित कक्षाएं लोअरकेस में हैं, उदा। सूची, स्ट्रिंग, आदि –

+4

आप अवलोकन w.r.t. बिल्ड-इन प्रकार सही है। ये निश्चित रूप से अपवाद हैं, हालांकि। मानक पुस्तकालय * में परिभाषित अधिकांश अन्य वर्ग * पूंजीकृत हैं। – Stephan202

+2

मैंने सोचा कि यह सही सम्मेलन था, लेकिन इसके साथ एक अंतर्निहित समस्या है, कम से कम ऐसा लगता है। मान लें कि मेरे पास 'क्लाइंट' नामक एक कक्षा है, और समझ में आता है कि मैं अक्सर इसके उदाहरण बनाउंगा कि मैं 'क्लाइंट' को कॉल करना चाहता हूं। लेकिन आपके सम्मेलन के अनुसार, मॉड्यूल का नाम 'क्लाइंट' होगा, और इसलिए मुझे हमेशा अपने उदाहरणों को 'client_instance' जैसे अप्राकृतिक नाम देना होगा। आप इस समस्या के बारे में क्या सोचते हैं? – Ray

34

मैं इसे nib.py कहूंगा। और मैं कक्षा निब नाम भी दूंगा।

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

from nib import Nib 
from foo import Foo 
from spam.eggs import Eggs, FriedEggs 

यह जावा तरीके को अनुकरण करने जैसा है। एक प्रति फ़ाइल एक वर्ग। लेकिन अतिरिक्त लचीलापन के साथ, यदि आप समझ में आता है तो आप एक ही फ़ाइल में एक और कक्षा जोड़ सकते हैं।

21

निब ठीक है। यदि संदेह है, तो पाइथन शैली मार्गदर्शिका देखें।

PEP 8 से

:

पैकेज और मॉड्यूल नाम मॉड्यूल छोटा है, सभी लोअरकेस नाम होना चाहिए। मॉड्यूल नाम में अंडरस्कोर का उपयोग किया जा सकता है यदि यह पठनीयता में सुधार करता है। पायथन पैकेज में छोटे, सभी-लोअरकेस नाम भी होना चाहिए, हालांकि अंडरस्कोर का उपयोग निराश है।

के बाद से मॉड्यूल नामों को दर्ज करने के लिए मैप की जाती हैं, और कुछ फाइल सिस्टम केस संवेदी है और लंबे समय के नाम काट-छांट कर रहे हैं, यह महत्वपूर्ण है कि मॉड्यूल नाम काफी कम होने के लिए चुना जाना - इस यूनिक्स पर एक समस्या नहीं होगी , लेकिन यह समस्या तब हो सकती है जब कोड पुराने मैक या विंडोज संस्करण, या डॉस में ले जाया जाता है।

एक विस्तार मॉड्यूल सी या सी ++ में लिखा एक साथ अजगर मॉड्यूल है कि एक उच्च स्तर प्रदान करता है (उदा अधिक वस्तु उन्मुख) इंटरफेस, C/C++ मॉड्यूल एक अग्रणी अंडरस्कोर न हो (उदा _socket)।

+1

उहम ... यह मुझे पेट में हिट करता है। मैं संकुल/मॉड्यूल में अंडरस्कोर उपसर्ग का उपयोग पूरी तरह से अलग (मॉन्टी पायथन संदर्भ इरादा) के लिए कर रहा हूं। –

25

मुझे पता है कि मेरा समाधान पाइथोनिक दृष्टिकोण से बहुत लोकप्रिय नहीं है, लेकिन मैं कक्षा के नाम से मॉड्यूल के साथ एक मॉड्यूल-> एक वर्ग के जावा दृष्टिकोण का उपयोग करना पसंद करता हूं। मैं पाइथन शैली के पीछे कारण समझता हूं, लेकिन मुझे बहुत सारी कक्षाएं रखने वाली बहुत बड़ी फ़ाइल होने का बहुत शौक नहीं है। फोल्डिंग के बावजूद मुझे ब्राउज़ करना मुश्किल लगता है।

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

यदि आप पाइथन दर्शन पसंद करते हैं, तो अन्य पोस्ट के सुझावों के लिए जाएं। यदि आप इसके बजाय जावा जैसी दर्शन पसंद करते हैं, तो एनआईबीटीवी युक्त कक्षा निब बनाएं।

+1

उल्लिखित मुद्दे संपादक में सीमाओं और संस्करण नियंत्रण उपकरण के उपयोग में हैं, भाषा या प्रोग्रामिंग शैली से नहीं। प्रति वर्ग एक वर्ग कोड संरचना के लिए हानिकारक है। नेविगेशन की सहायता के लिए अपने वर्गों का सारांश देखने के लिए 'स्पाइडर' या एक समान संपादक का उपयोग करें, और दोनों फाइलों को एक ही फ़ाइल के साथ खोलें। इसके अलावा, कृपया पीईपी 8 पढ़ें। पायथन लिथॉन लिखने के लिए है, और जावा के लिए जावा, लेकिन पाइथन जावा लिखने के लिए * नहीं * है। –

+4

@IoannisFilippidis: अगर मुझे कोड के आकार में एक ही फाइल में एक मॉड्यूल के लिए सभी वर्गों को सामान्य रूप से प्रबंधित करना होता है, तो मैं फ़ाइल को खोलने में भी सक्षम नहीं होता, अन्य सहकर्मियों के साथ टकराव स्कीरकेट होगा, और मेरा मालिक थूक जाएगा मेरा चेहरा (रूपक रूप से, यह है) इसे प्रस्तावित करने के लिए। एक एकल फ़ाइल दृष्टिकोण पैमाने पर नहीं है, पीईपी -8 या नहीं। –

+0

@StefanoBorini: PEP8 एक फ़ाइल दृष्टिकोण के लिए कॉल नहीं करता है। प्रति वर्ग एक वर्ग और एक फ़ाइल प्रति (कोड इकाई) एक बहुत व्यापक स्पेक्ट्रम के दो चरम सीमाएं हैं। यदि आप प्रति फ़ाइल एक फ़ाइल के साथ अप्रबंधनीय रूप से बड़ी फ़ाइल आकार देख रहे हैं, तो आपको शायद मॉड्यूल में पैकेज को तोड़ने के अपने दृष्टिकोण को संशोधित करने पर विचार करना चाहिए। –

0

foo अजगर में मॉड्यूल जावा में एक फू वर्ग फ़ाइल के बराबर होगा

या

foobar अजगर में मॉड्यूल में एक FooBar वर्ग फ़ाइल के बराबर होगा जावा

संबंधित मुद्दे