你可以不用任何工具。 首先您需要获取数据。这是非常简单的例子:
"""My module"""
def foo():
"""Some function"""
pass
def bar():
"""Another function"""
pass
class Spam(object):
"""Some object"""
pass
if __name__ == '__main__':
import types
defs = set(locals().keys()).difference(set(__builtins__.keys()))
if __doc__:
print 'Module:'
print __doc__, '\n'
for name in defs:
object_ = locals()[name]
if type(object_) is types.FunctionType:
print "Function %s:" % object_.__name__
print object_.__doc__, '\n'
elif type(object_) is type:
print "Class %s:" % object_.__name__
print object_.__doc__, '\n'
输出将是:
Module:
My module
Function bar:
Another function
Class Spam:
Some object
Function foo:
Some function
将HTML,您可以使用一个模板引擎,例如Mako。制作一个模板并将数据从__doc__传递给它,并且应该完成这项工作。
编辑:这是一种从一个函数得到签名:
>>> def foo(spam, eggs):
... bar = spam + eggs
... return bar
>>> varnames = foo.func_code.co_varnames
>>> argcount = foo.func_code.co_argcount
>>> '%s(%s)' % (foo.__name__, ', '.join(varnames[:argcount]))
0: 'foo(spam, eggs)'