如何使用python

时间:2018-07-09 22:23:44

标签: python scikit-learn

我正在尝试编写一个包含两个类的模块。第一类称为TextProcessing

class TextProcessing(object):

    """ To carry out text processing 
    """

    def __init__(self,):
        pass

它具有用于预处理文本的多种方法。

silmilary的其他类用于处理预处理数据上的其他数据。

我将这两个类保存在python文件中以使其成为模块。

现在让我们说一个用户下载了这个python模块,现在想运行每个类的各种方法。

我想在用户导入模块时向用户提供有关该模块,每个类的方法的某种文档,以便她知道要调用的函数以及要传递的参数。

scikit如何在其文档页面上学习文档。

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

即使我们做的时候也可以看到文档

help(some_python_module) 

也很好。

问题是我没有像sklearn这样的文档页面来显示文档。而且我希望用户知道将其导入python控制台后可以使用的各种方法的文档。

当用户导入模块时,是否可以将文档信息打印到控制台?

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

1 个答案:

答案 0 :(得分:1)

这是一件很奇怪的事情,但这绝对是可能


最简单的方法是致电help。可以从交互式提示中调用它,但是没有什么可以阻止您从自己的代码中调用它。

您当然可以 提取文档字符串(它们以public class Car{ public int Id; public Color Color; } public class Color { public int Id; public string ColorName; } public static void Main() { var carList = new List<Car> { new Car() { Id = 1, Color = new Color {Id = 1, ColorName = "blue" }}, new Car() { Id = 1, Color = new Color {Id = 1, ColorName = "blue" }}, new Car() { Id = 1, Color = new Color {Id = 2, ColorName = "red" }}, new Car() { Id = 1, Color = new Color {Id = 3, ColorName = "green" }}, }; var carColorMap = GetCarscolorsMap(carList); public static Dictionary<Id, Dictionary<Id, Color>> GetCarscolorsMap(List<Car> carList) { return carList.GroupBy(x => new { x.Id, x.Color}) .GroupBy(x => x.Key.Id) .ToDictionary(x => x.Key, v => v.Select(x => x.FirstOrDefault()) .ToDictionary(x => x.Color.Id, val => val.Color)); } } 的形式存储在每个模块,类和函数中),__doc__自己,{{ 1}},但如果您要复制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的脚本,而不是通过交互式会话来执行脚本,那将是很奇怪的。因此,您可能只想在交互式会话中执行此操作,方法是选中sys.flags

help

如果有人做import helpful,而那个if sys.flags.interactive: help(sys.modules[__name__]) import otherthing怎么办?您将获得相同的帮助,这可能会令人困惑。

如果这是一个问题,那么我能想到的唯一真正的选择是检查调用框架是否来自顶层脚本(并且标志是否是交互式的)。那是很棘手的事情,除非真正需要,否则您甚至都不应该考虑这一点,因此,我将指导您进入inspect模块,并希望您不需要它。