【发布时间】:2019-09-24 23:14:56
【问题描述】:
我想打印一个模块的文档以包含每个类和类中每个方法的文档字符串,但只包括我编写的方法;不是默认方法。
这是my_module.py:
import json
import pandas as pd
class my_class1:
"""My class 1 docs."""
def my_method1(self):
"""My class 1 method 1 docs."""
return None
class my_class2:
"""My class 1 docs."""
def my_method1(self):
"""My class 2 method 2 docs."""
return None
想要的输出是这样的:
my_class1
My class 1 docs.
my_method1:
My class 1 method 1 docs.
my_class2
My class 2 docs.
my_method2:
My class 2 method 2 docs.
这个脚本成功打印出我想要的所有类方法:
import my_module as mm
imports = ['json','pd'] # Pre-defined modules within my_module that I don't wish to document
for i in [c for c in dir(mm) if not c.startswith('__') and not c in imports]:
print(getattr(mm, i).__name__)
print(getattr(mm, i).__doc__)
输出:
my_class1
My class 1 docs.
my_class2
My class 1 docs.
但我已经尝试过这个脚本来包含方法,但它只是多次记录每个类并排除方法。
import my_module as mm
imports = ['json','pd']
for i in [c for c in dir(mm) if not c.startswith('__') and not c in imports]:
print(getattr(mm, i).__name__)
print(getattr(mm, i).__doc__)
for j in [c for c in dir(i) if c == '__init__' or not c.startswith('__')]:
print(getattr(mm, i,j).__name__)
print(getattr(mm, i,j).__doc__)
输出:
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class1
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
my_class2
My class 1 docs.
我应该用什么来打印所有的方法文档字符串?
【问题讨论】:
-
你不能像这样链接
getattr参数。getattr(a, 'b', 'c')不代表a.b.c。 -
嗯,好的,谢谢。那么如何获取方法的属性呢?
-
大多数我看到使用
functools.reduce。虽然如果使用不当,它会变得多毛并导致奇怪的错误。 -
你似乎在重塑
pydoc。
标签: python python-3.x documentation-generation docstring