2017-08-21 59 views
7

Trong Python dir() trả về danh sách tên trong phạm vi địa phương hiện tại. __doc__ trả lại chuỗi tài liệu hoàn chỉnh của đối tượng.Có cách nào để in một phiên bản ngắn của chuỗi tài liệu cho tất cả các thành viên của một đối tượng Python không?

Tôi làm cách nào để liệt kê tất cả các tên trong phạm vi địa phương hiện tại và in dòng đầu tiên của chuỗi tài liệu của mỗi mục?

Để xây dựng: cho import numpy as np Tôi muốn có danh sách các mô tả ngắn về tất cả các tên được trả lại bởi dir(np) ví dụ: print(np.nonzero.__doc__.split('.', 1)[0]).

Tôi làm cách nào để thực hiện việc này?

Trả lời

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

Tôi đã sử dụng một cái gì đó như thế này. Nó tương tự nhưng không chính xác những gì bạn đang tìm kiếm. Bạn có thể điều chỉnh đầu ra của chuỗi tài liệu theo nhu cầu của mình.

############################################################################### 
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" 
Các vấn đề liên quan