2012-03-16 13 views
6

एक पायथन डॉकस्ट्रिंग को शाब्दिक स्ट्रिंग के रूप में दिया जाना चाहिए; लेकिन कभी-कभी कई कार्यों (जैसे, विभिन्न रचनाकार) के लिए समान डॉकस्ट्रिंग होना उपयोगी होता है, या कई एक्सेस विधियां तर्कों की एक ही सूची को स्वीकार कर सकती हैं (और फिर उसी छिपी विधि पर भरोसा करती हैं), इसलिए का उपयोग करना अच्छा होगा हर जगह विवरण। ऐसे मामलों के लिए मैं __doc__ को असाइन करके एक डॉकस्ट्रिंग का निर्माण कर सकता हूं, जो कि मैं एक साधारण सजावटी के माध्यम से करता हूं। यह प्रणाली बहुत अच्छी तरह से काम करती है (पायथन 2 में), और मुझे खुशी है कि यह कितना सरल, स्पष्ट और अच्छी तरह से encapsulated है।एक सजावट के साथ एक अजगर docstring संशोधित: क्या यह एक अच्छा विचार है?

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

+0

"विभिन्न रचनाकार"? मुझे लगता है कि आप किसी प्रकार का कारखाना कार्य करते हैं, क्योंकि आपके पास केवल एक '__init__' हो सकता है। –

+0

मुझे नहीं लगता कि "फैक्ट्री फ़ंक्शन" सही है। मैं एक वर्ग के स्थिर सदस्यों का जिक्र कर रहा था, जो एक ही कक्षा का उदाहरण बनाते थे। वे सभी एक भाषा में बहुलक रचनाकार होंगे जो सीधे इसका समर्थन करते हैं। लेकिन हां, फैक्ट्री फ़ंक्शन एक और उपयोग केस हो सकता है। – alexis

+0

मैं उनको एक तरह का कारखाना मानूंगा, हाँ। नेमस्पेसिंग के अलावा स्थिर सदस्य कार्यों और मुफ्त कार्यों (सी ++ शब्दावली का उपयोग करने के लिए) में वास्तव में कोई अंतर नहीं है। हालांकि पायथन में अलग "वर्ग विधि" और "स्थैतिक विधि" अवधारणाएं हैं। –

उत्तर

4

यह किसी भी उपकरण नहीं तोड़ चाहिए और यह अजगर पर काम करना चाहिए 3.

यह ठीक है यह एक स्रोत कोड पठनीयता यानी चोट नहीं करता है, तो आप अभी भी पता कर सकते हैं समारोह क्या करता है और कैसे उपयोग करने के लिए यह।

समस्या यह हो सकती है कि यह एक खराब डिजाइन का मुखौटा करे। यदि कई विधियां तर्कों की एक ही सूची का उपयोग करती हैं तो दोहराए जाने वाले दस्तावेज़ों को उत्पन्न करके पैच किए जाने के बजाय कोड को पुन: सक्रिय किया जाना चाहिए (सूची के साथ काम करने वाली वस्तु बनाएं)।

+0

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

+0

सवाल फिर से खोल दिया क्योंकि मुझे इस पर अधिक प्रतिक्रिया सुनने की उम्मीद है। कोई अपराध इरादा नहीं है! – alexis

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