2017-08-21 47 views
7

Python'da dir() geçerli yerel kapsamdaki adların listesini döndürür. __doc__, bir nesnenin tüm belgelerini döndürür.Bir Python nesnesinin tüm üyeleri için kısa bir belgeyi yazdırmanın bir yolu var mı?

Geçerli yerel kapsamdaki tüm adları nasıl listeleyebilir ve her öğenin belgesinin ilk satırını nasıl yazdırabilirim?

Ayrıntılı bilgi için: import numpy as np için dir(np) tarafından döndürülen tüm adların kısa açıklamalarının bir listesini almak istiyorum. print(np.nonzero.__doc__.split('.', 1)[0]).

Bunu nasıl yapabilirim?

cevap

5
def print_members(obj): 
    for key in dir(obj): 
     value = getattr(obj, key) 
     doc = (value.__doc__ or '').split('.', 1)[0] 
     print('MEMBER: %s\nDOCSTRING: %s\n\n' % (key, doc)) 
0

Böyle bir şey kullandım. Benzer ama tam aradığınız şey değil. Doküman çıktılarını ihtiyaçlarınıza göre ayarlayabilirsiniz.

############################################################################### 
def about(obj=None, text=None, capsOnly=False, noLeadingUnderScores=False): 
    """ 
    Utility function to assist with discovery while playing in the Python 
    shell. When possible, returns the sorted dir() and values() of the 
    specified object. 

    * noLeadingUnderScores - toggles display filtering of items that have a 
          leading underscore; only applies to dir() not 
          values() items. 

    * capsOnly - toggles display filtering of items that are uppercase only. 
       this only applies to dir() not values() items. 

    * text -  toggles the display filtering of items that have 'text' 
       within their string; applies to both dir() and values() items. 
    """ 

    print "\n*******************\n* print __obj__ *\n*******************\n" 
    if obj is None: 
     print "about() is meaningless as 'obj' is None" 
    else: 
     # diplay help(), if possible 
     try: 
      if obj.__doc__: 
       print "\n\n********************\n* HELP() results *\n********************\n" 
       for x in obj.__doc__.split('\n'): 
         print x 
     except: 
      print "\nno __obj__ available" 


     # display dir(), if possible 
     print "\n\n*******************\n* DIR() results *\n*******************\n" 
     for x in sorted(dir(obj)): 
      temp = "%s" % x 
      if noLeadingUnderScores and len(temp) > 0 and temp[0] == "_": 
       continue 
      elif capsOnly: 
       if temp == temp.upper(): 
        if text and text in temp: 
         print temp 
       else: 
        continue 
      elif text: 
       if text in temp: 
        print temp 
      else: 
       print temp 

     # display values(), is possible 
     try: 
      if obj.values and type(obj.values) == type({}): 
       print "\n\n**********************\n* DICT values(k,v) *\n**********************\n" 
       for x in sorted(obj.values.keys()): 
        if text: 
         if text in x or text in str(obj.values[x]): 
          print x, obj.values[x] 
        else: 
         print x, obj.values[x] 
     except: 
      print "\nno dictionary like obj.values available" 
İlgili konular