[英]How to show documentation of a module and sub class to a user in python
我正在尝试编写具有两个类的模块。 第一类称为TextProcessing
class TextProcessing(object):
""" To carry out text processing
"""
def __init__(self,):
pass
它具有用于预处理文本的各种方法。
类似地,其他类用于处理预处理数据的其他数据。
我将这两个类保存在python文件中以使其成为模块。
现在,假设用户下载了这个python模块,现在想运行每个类的各种方法。
我想为用户在导入模块时向其提供有关该模块,每个类的方法的某种文档,以便她知道要调用的函数以及要传递的参数。
考虑一下scikit如何在其文档页面上学习文档。
甚至当我们这样做时,我们也会看到文档
help(some_python_module)
也可以
问题是我没有像sklearn这样的文档页面来显示文档。 而且我希望用户知道将其导入python控制台后可以使用的各种方法的文档。
用户导入模块时,有什么方法可以将文档信息打印到控制台?
它可以显示每个类和方法的文档字符串。
这是一件很奇怪的事情,但是绝对有可能 。
最简单的方法就是致电help
。 虽然打算从交互式提示中调用它,但没有什么能阻止您从自己的代码中调用它。
当然,您可以提取文档字符串(它们以__doc__
形式存储在每个模块,类和函数中),自己进行自动textwrap
,然后将其print
输出,但是如果您要复制与help
相同的内容,那大量工作没有任何实际好处。
唯一棘手的一点是,您要在其上调用帮助系统的是“当前模块”。 您如何指代呢? 这有点笨拙,但是您将当前模块的名称命名为__name__
,因此可以在sys.modules
进行查找。
所以:
"""Helpful module"""
import sys
class Spam:
"""Classy class"""
def eggs(self):
"Functional function"
return 2
help(sys.modules[__name__])
现在,在会话中首次import helpful
时,它将打印出help
。
当然,如果有人尝试运行对import helpful
的脚本,而不是从交互式会话中进行import helpful
,那将是很奇怪的。 因此,您可能只想通过检查sys.flags
在交互式会话中执行此sys.flags
:
if sys.flags.interactive:
help(sys.modules[__name__])
如果有人做了import otherthing
,而otherthing
做的import helpful
? 您将获得相同的帮助,这可能会造成混淆。
如果这是一个问题,我唯一想到的真正的选择就是检查调用框架是否来自顶级脚本(并且这些标志是交互式的)。 那是很棘手的事情,除非真正需要,否则您甚至都不应该考虑这一点,因此,我将指导您进入inspect
模块,并希望您不需要它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.