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

2024-06-16 17:27:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着编写一个有两个类的模块。第一类称为文本处理

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控制台中导入模块后可以使用的各种方法的文档

有没有一种方法可以在用户导入模块时将文档信息打印到控制台

它可以显示每个类和方法的文档字符串


Tags: 模块to数据方法text用户文档object
1条回答
网友
1楼 · 发布于 2024-06-16 17:27:04

这是一件非常奇怪的事情,但绝对有可能


最简单的方法就是调用^{}。虽然它打算从交互式提示符调用,但是没有什么可以阻止您从自己的代码中调用它

当然,您可以而不是提取docstring(它们在每个模块、类和函数上存储为__doc__),然后textwrap自己提取它们,然后print将它们提取出来,但是如果您试图复制help所做的相同的事情,那么这将是大量的工作,没有真正的好处


唯一棘手的一点是,您要调用帮助系统的对象是“thiscurrentmodule”。你是怎么说的?它有点笨拙,但是您将当前模块的名称命名为__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的脚本,而不是从一个交互式会话执行它,那将是非常奇怪的。因此,您可能只希望在交互式会话中执行此操作,方法是选中^{}

if sys.flags.interactive:
    help(sys.modules[__name__])

如果有人做了一个import otherthing,而那个otherthing做了一个import helpful呢?你也会得到同样的帮助,这可能会让人困惑

如果这是一个问题,我能想到的唯一实际选择就是检查调用帧是否来自顶层脚本(并且标志是交互式的)。这是一个非常复杂的问题,除非你真的需要,否则你甚至不应该考虑这个问题,所以我将引导你进入^{}模块,希望你不需要它

相关问题 更多 >