繁体   English   中英

如何在python中向用户显示模块和子类的文档

[英]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如何在其文档页面上学习文档。

http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfTransformer.html

甚至当我们这样做时,我们也会看到文档

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM