2010-03-31 11 views
112

ठीक है, तो मैं PEP 8 और PEP 257 दोनों पढ़ा है, और मैं कार्य करता है और कक्षाओं के लिए docstrings के बहुत लिखा है, लेकिन मैं क्या एक मॉड्यूल docstring में जाना चाहिए के बारे में थोड़ा अनिश्चित हूँ। मैं लगा, कम से कम, यह कार्य करता है और कक्षाएं कि मॉड्यूल निर्यात दस्तावेज़ चाहिए, लेकिन मैं यह भी है कि लेखक के नाम, कॉपीराइट जानकारी, आदि की सूची में कुछ मॉड्यूल देखा है किसी को भी कैसे एक अच्छा अजगर docstring चाहिए एक उदाहरण है संरचित किया जा सकता है?एक अजगर मॉड्यूल docstring में क्या रखें?

उत्तर

131

इंटरैक्टिव दुभाषिया के संकेत पर help(yourmodule) करने वाले किसी के बारे में सोचें - वे क्या चाहते हैं जानना चाहते हैं? (निकालने और जानकारी प्रदर्शित के अन्य तरीकों के बारे में जानकारी की राशि के मामले में मोटे तौर पर help के बराबर हैं)। तो तुम x.py में पूछना चाहते हैं तो:

"""This module does blah blah.""" 

class Blah(object): 
    """This class does blah blah.""" 

तो:

>>> import x; help(x) 

शो:

Help on module x: 

NAME 
    x - This module does blah blah. 

FILE 
    /tmp/x.py 

CLASSES 
    __builtin__.object 
     Blah 

    class Blah(__builtin__.object) 
    | This class does blah blah. 
    | 
    | Data and other attributes defined here: 
    | 
    | __dict__ = <dictproxy object> 
    |  dictionary for instance variables (if defined) 
    | 
    | __weakref__ = <attribute '__weakref__' of 'Blah' objects> 
    |  list of weak references to the object (if defined) 

जैसा कि आप देख, भी वर्ग (और कार्यों पर विस्तृत जानकारी है, हालांकि मैं मैं यहां एक नहीं दिखा रहा हूं) पहले से ही उन घटकों के डॉकस्ट्रिंग से शामिल है; मॉड्यूल की अपनी docstring उन्हें बहुत सरसरी तौर पर वर्णन करना चाहिए (यदि सभी) और नहीं बल्कि कुछ doctested उदाहरण (केवल कार्य करता है और कक्षाओं में आदर्श doctested जाना चाहिए था उदाहरण की तरह साथ आदर्श, क्या एक पूरे के रूप मॉड्यूल आप के लिए क्या कर सकते हैं की एक संक्षिप्त सारांश पर ध्यान केंद्रित थिट डॉकस्ट्रिंग्स)।

मुझे नहीं पता कि लेखक नाम और कॉपीराइट/लाइसेंस जैसे मेटाडेटा मॉड्यूल के उपयोगकर्ता की सहायता कैसे करता है - यह टिप्पणियों में जा सकता है, क्योंकि इससे मॉड्यूल का पुन: उपयोग या संशोधित करने पर विचार करने में कोई मदद कर सकता है।

+1

तो, क्या मॉड्यूल के शीर्ष पर टिप्पणियों में लेखक, कॉपीराइट इत्यादि शामिल करना प्रथागत है? –

+2

@ 007brendan, यह बहुत आम प्रथा है, हां। –

+2

@IfLoop मुझे संदेह है कि ऐसे उपयोगकर्ता हैं जो दुभाषिया में 'सहायता()' विधि का उपयोग करते हैं जो उपयोगकर्ताओं को कोड पढ़ते हैं। – confused00

33

के शब्दों में specifications:

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

एक मॉड्यूल आम तौर पर कक्षाएं, अपवाद और कार्य (और किसी भी अन्य वस्तुओं) कि प्रत्येक की एक पंक्ति सारांश के साथ, मॉड्यूल द्वारा निर्यात किया जाता है में सूचीबद्ध करना चाहिए के लिए docstring। (ये सारांश आमतौर पर ऑब्जेक्ट के डॉकस्ट्रिंग में सारांश रेखा से कम विवरण देते हैं।) पैकेज के लिए डॉकस्ट्रिंग (यानी, पैकेज के __init__.py मॉड्यूल के डॉकस्ट्रिंग) को पैकेज द्वारा निर्यात किए गए मॉड्यूल और उप-पैकेजों को भी सूचीबद्ध करना चाहिए।

वर्ग के लिए डॉकस्ट्रिंग को इसके व्यवहार को सारांशित करना चाहिए और सार्वजनिक विधियों और आवृत्ति चर सूचीबद्ध करना चाहिए। वर्ग subclassed करने का इरादा है, और उपवर्गों के लिए एक अतिरिक्त इंटरफ़ेस है, तो इस इंटरफेस अलग (docstring में) सूचीबद्ध किया जाना चाहिए। क्लास कन्स्ट्रक्टर को __init__ विधि के लिए डॉकस्ट्रिंग में दस्तावेज किया जाना चाहिए। व्यक्तिगत तरीकों को अपने स्वयं के डॉक्टर द्वारा दस्तावेज किया जाना चाहिए।

एक समारोह या विधि की docstring एक मुहावरा अवधि में समाप्त हो रहा है। यह फ़ंक्शन या विधि के प्रभाव को कमांड के रूप में निर्धारित करता है ("यह करें", "इसे वापस करें"), विवरण के रूप में नहीं; जैसे लिखो "पथनाम लौटाता है ..."। किसी फ़ंक्शन या विधि के लिए एक मल्टीलाइन-डॉकस्ट्रिंग को इसके व्यवहार को सारांशित करना चाहिए और इसके तर्क, वापसी मूल्य, साइड इफेक्ट्स, उठाए गए अपवाद, और जब इसे कॉल किया जा सकता है तो प्रतिबंध (सभी लागू होने पर) को दस्तावेज करना चाहिए। वैकल्पिक तर्क संकेत दिया जाना चाहिए। यह दस्तावेज किया जाना चाहिए कि कीवर्ड तर्क इंटरफ़ेस का हिस्सा हैं या नहीं।

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