我正在尝试编写一个包含两个类的模块。第一类称为TextProcessing
class TextProcessing(object):
""" To carry out text processing
"""
def __init__(self,):
pass
它具有用于预处理文本的多种方法。
silmilary的其他类用于处理预处理数据上的其他数据。
我将这两个类保存在python文件中以使其成为模块。
现在让我们说一个用户下载了这个python模块,现在想运行每个类的各种方法。
我想在用户导入模块时向用户提供有关该模块,每个类的方法的某种文档,以便她知道要调用的函数以及要传递的参数。
scikit如何在其文档页面上学习文档。
即使我们做的时候也可以看到文档
help(some_python_module)
也很好。
问题是我没有像sklearn这样的文档页面来显示文档。而且我希望用户知道将其导入python控制台后可以使用的各种方法的文档。
当用户导入模块时,是否可以将文档信息打印到控制台?
它可以显示每个类和方法的文档字符串。
答案 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
模块,并希望您不需要它。