2014-02-08 33 views
0

如何從python文件創建文檔? 我想從所有的對象和類創建樹和def,我通過讀取變量解釋所有的方法。 我要創建我的Python文件文檔是窮人的任何doc.for例子,這是我的Python文件:從python文件生成文檔沒有doc字符串和python文件中的任何評論

from core.server import handler 
from core.ras import ras_main,ras 
from core.lib.sort import SortedList,SortedDic 
from core.lib.general import * 
from core.lib.multi_strs import MultiStr 
from core.ippool import ippool_main 

class RasHandler(handler.Handler): 
    def __init__(self): 
     handler.Handler.__init__(self,"ras") 
     self.registerHandlerMethod("addNewRas") 
     self.registerHandlerMethod("getRasInfo") 
     self.registerHandlerMethod("getActiveRasIPs") 
     self.registerHandlerMethod("getRasDescriptions") 
     self.registerHandlerMethod("getInActiveRases") 
     self.registerHandlerMethod("getRasTypes") 
     self.registerHandlerMethod("getRasAttributes") 
     self.registerHandlerMethod("getRasPorts") 
     self.registerHandlerMethod("updateRasInfo") 
     self.registerHandlerMethod("updateAttributes") 
     self.registerHandlerMethod("resetAttributes") 
     self.registerHandlerMethod("getPortTypes") 
     self.registerHandlerMethod("addPort") 
     self.registerHandlerMethod("delPort") 
     self.registerHandlerMethod("updatePort") 
     self.registerHandlerMethod("deActiveRas") 
     self.registerHandlerMethod("deleteRas") 
     self.registerHandlerMethod("reActiveRas") 
     self.registerHandlerMethod("getRasPortInfo") 
     self.registerHandlerMethod("getRasIPpools") 
     self.registerHandlerMethod("addIPpoolToRas") 
     self.registerHandlerMethod("delIPpoolFromRas") 

    def addNewRas(self,request): 
     request.needAuthType(request.ADMIN) 
     creator_obj=request.getAuthNameObj() 
     creator_obj.canDo("CHANGE RAS") 
     request.checkArgs("ras_ip","ras_type","radius_secret","ras_description","comment") 

     ras_id=ras_main.getActionManager().addNewRas(request["ras_ip"].strip(), 
                request["ras_description"].strip(), 
                request["ras_type"], 
                request["radius_secret"], 
                request["comment"], 
                creator_obj.getAdminID(), 
                creator_obj.getISPID(), 
                request.getRemoteAddr() 
                ) 
     return ras_id 

    def getRasInfo(self,request): 
     request.needAuthType(request.ADMIN) 
     requester_obj=request.getAuthNameObj() 
     requester_obj.canDo("GET RAS INFORMATION") 
     request.checkArgs("ras_ip") 

     requester_obj.checkAccessToRasByIP(request["ras_ip"]) 
     ras_obj=ras_main.getLoader().getRasByIP(request["ras_ip"]) 
     return ras_obj.getInfo() 

    def getActiveRasIPs(self,request): 
     request.needAuthType(request.ADMIN) 
     creator_obj=request.getAuthNameObj() 

     if request.has_key("type_filter"): 
      types = request.fixList("type_filter") 
      def typeFilter(ras_obj): 
       if ras_obj.getType() in types: 
        return ras_obj.getRasIP() 

       return None 

      ras_ips = filter(None, ras_main.getLoader().runOnAllRases(typeFilter)) 
     else: 
      ras_ips = ras_main.getLoader().getAllRasIPs() 

     ras_ips = filter(creator_obj.hasAccessToRasByIP, ras_ips) 

     sorted=SortedList(ras_ips) 
     sorted.sort(False) 
     return sorted.getList() 


    def getRasDescriptions(self,request): 
     """ 
      return list of tuples in format [(ras_description,ras_ip)] 

     """ 
     request.needAuthType(request.ADMIN) 
     requester_obj=request.getAuthNameObj() 
     desc_to_ip_map = ras_main.getLoader().getRasDescToIPMap() 

     for ras_desc, ras_ip in desc_to_ip_map.items(): 
      if not requester_obj.hasAccessToRasByIP(ras_ip): 
       del(desc_to_ip_map[ras_desc]) 

     sorted=SortedDic(desc_to_ip_map) 
     sorted.sortByKey(False) 
     return sorted.getList() 

    def getInActiveRases(self,request): 
     request.needAuthType(request.ADMIN) 
     creator_obj=request.getAuthNameObj() 
     creator_obj.canDo("LIST RAS") 
     return ras_main.getActionManager().getInActiveRases() 

    def getRasTypes(self,request): 
     """ 
      return a list of all available ras types 
     """ 
     request.needAuthType(request.ADMIN) 
     creator_obj=request.getAuthNameObj() 
     creator_obj.canDo("GET RAS INFORMATION") 
     type_list=ras_main.getFactory().getAllTypes() 
     sorted = SortedList(type_list) 
     sorted.sort(False) 
     return sorted.getList() 

    def getRasAttributes(self,request): 
     request.needAuthType(request.ADMIN) 
     request.checkArgs("ras_ip") 

     requester_obj=request.getAuthNameObj() 
     requester_obj.canDo("GET RAS INFORMATION") 
     requester_obj.checkAccessToRasByIP(request["ras_ip"]) 

     return ras_main.getLoader().getRasByIP(request["ras_ip"]).getAllAttributes() 

如何從這個創建文檔?例如,我想要這些信息用於我的結果。如:多少def,多少class,def與class之間的關係。 不要使用help()和dir()方法,因爲我沒有任何依賴模塊。 我覺得應該使用通過re模塊解析python文件和使用正則表達式。 如何做到這一點? 我無法導入這個文件。我想用它處理文本文件!

+2

什麼樣的文檔做你想生成? Python有在函數和類中使用文檔字符串來生成文檔的方法,但是您指定了「沒有文檔字符串和任何評論」,所以很難準確理解您想要的內容。你能舉一個生成文檔的例子嗎? – icedtrees

+0

保存關於函數信息的最佳位置,class是docString,所以我個人認爲不用docString生成doc是一個好主意,因爲幫助也應該是第一手可用於程序員而不僅僅是學習者或代碼的用戶。 –

回答

0

即使你不寫文檔字符串也沒有意見,你仍然可以鍵入:

help(your_object) 

拿到類的自動生成的文檔。 your_object可以是任何類型的對象,那就是:

  • 一個類的實例
  • 功能
  • 模塊

所以,如果你想要給定文件的文檔(我理解一個模塊),你可以這樣做:

import your_module 
help(your_dodule) 

,如果你的文件名爲your_file.py幷包含類調用your_class,你可以這樣做:

python -i your_file.py 
help(your_class) 

你甚至可以生成從shell提示符(而不是從Python解釋器提示符)的文檔。再假設你想生成your_file.py文檔,請執行下列操作:

pydoc your_file 

最後,如果你想生成此模塊的HTML文檔,這樣做:

pydoc -w your_file 
+0

謝謝你的回答。但是我沒有看到像module這樣的文件。我看到諸如文本文件(.py),並且我沒有這個文件的任何依賴,我也無法導入它。 –

+0

我剛剛編輯了我的答案,告訴我它是否有幫助。順便說一句,你應該刪除自己的問題的答案,因爲這個「答案」只是增加更多的信息到你的問題,並沒有回答。如果你想提供更多的信息,你應該編輯你的問題。 –

+0

另一個編輯,顯示如何使用pydoc。我認爲這就是你想要的:-) –