0

docstringを書かずにPythonファイルからドキュメントを作成するには? すべてのオブジェクトとクラスと関数からツリーを作成したいと考えています。たとえば、これは私の 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()

たとえば、関数、クラスはいくつありますか? などの結果の情報が必要です。そして関数とクラスの関係。依存モジュールがないため、help()andメソッドは使用しません。モジュールごとの解析Pythonファイルの使用と正規表現dir()の使用が必要だと思います。re

4

1 に答える 1

0

docstring やコメントを書かなくても、次のように入力できます。

help(your_object)

クラスの自動生成されたドキュメントを取得します。your_object は、次のような任意の種類のオブジェクトにすることができます。

  • クラス
  • クラスインスタンス
  • 機能
  • モジュール

したがって、特定のファイルのドキュメントが必要な場合(モジュールを理解しています)、次のことができます。

import your_module
help(your_dodule)

ファイルの名前が your_file.py で、your_class というクラスが含まれている場合、次のことができます。

python -i your_file.py
help(your_class)

シェル プロンプトから (Python インタープリター プロンプトからではなく) ドキュメントを生成することもできます。your_file.py のドキュメントを生成する場合は、次の手順を実行します。

pydoc your_file

最後に、このモジュールの HTML ドキュメントを生成する場合は、次のようにします。

pydoc -w your_file
于 2014-02-08T10:01:43.280 に答える