2009-08-13 12 views
5

मैं अपने कमांडलाइन एप्लिकेशन में डॉकस्ट्रिंग को पकड़ना चाहता हूं, लेकिन हर बार जब मैं बिल्टिन हेल्प() फ़ंक्शन को कॉल करता हूं, तो पाइथन इंटरेक्टिव मोड में जाता है।पाइथन इंटरएक्टिव मोड में जाने के बिना डॉकस्ट्रिंग प्राप्त करें

मैं किसी ऑब्जेक्ट का डॉकस्ट्रिंग कैसे प्राप्त करूं और में पाइथन फोकस नहीं है?

>>> print str.__doc__ 

अजगर 3 में, आप मुद्रण के लिए कोष्ठक की आवश्यकता होगी::

>>> print(str.__doc__) 

उत्तर

7

किसी भी docstring .__doc__ संपत्ति माध्यम से उपलब्ध है एक वर्ग की सामग्री प्राप्त करने के लिए और उसके बाद फिर से प्रयास करें, विधियों या अन्य सामान की तलाश में। इस उदाहरण नाम cmd के साथ शुरू तरीकों के लिए एक वर्ग Task में लग रहा है और उनके docstring हो जाता है:

command_help = dict() 

for key in dir(Task): 
    if key.startswith('cmd'): 
     command_help[ key ] = getattr(Task, key).__doc__ 
3

आप उपयोग कर सकते हैं dir( {insert वर्ग यहाँ नाम} )

1

.__doc__ सबसे अच्छा विकल्प है। हालांकि, docstring प्राप्त करने के लिए आप inspect.getdoc का भी उपयोग कर सकते हैं। इसका उपयोग करने का एक फायदा यह है कि यह डॉकस्ट्रिंग से इंडेंटेशन को हटा देता है जो कोड के ब्लॉक के साथ लाइन करने के लिए इंडेंट किया जाता है।

उदाहरण:

In [21]: def foo(): 
    ....:  """ 
    ....:  This is the most useful docstring. 
    ....:  """ 
    ....:  pass 
    ....: 

In [22]: from inspect import getdoc 

In [23]: print(getdoc(foo)) 
This is the most useful docstring. 

In [24]: print(getdoc(str)) 
str(object='') -> string 

Return a nice string representation of the object. 
If the argument is a string, the return value is the same object. 
संबंधित मुद्दे