是否可以限制Python包的help()函数的输出?



在包上调用Pythonhelp()函数时,我得到以下结果:

  1. __init__.py
  2. 中指定的文档字符串的内容。
  3. 包含所有模块的包内容列表
  4. 包的版本
  5. __init__.py路径

作为面向客户的软件的提供者,我希望将此输出限制为相关信息,即不显示那些不打算由客户使用的模块。

因此,如果我的包p包含模块A, B和_c,其中A和B被用作公共接口,而_c仅为A和B提供一些实用程序功能,那么我想限制help(P)的输出:

Help on package P:
Some descriptive text.
PACKAGE CONTENTS
A
B
VERSION
1.0
FILE
/path/to/P/__init__.py

当试图为模块实现类似的东西时,我可以定义我自己的__dir__()函数,有趣的是help(module)尊重它。但是,试图将相同的方法应用于包(意思是:在__init__.py中定义__dir__())不会达到结果。

help()的输出来自pydoc模块

查看相关源代码,PACKAGE CONTENTS部分是由pkgutil.iter_modules()生成的,并且没有钩子可以从那里隐藏一些模块(除了猴子修补整个函数以隐藏您想要的模块,当堆栈指示它从pydoc调用时,但我会强烈建议不要这样做,除非这是一个你完全控制的应用程序)。

您可以使用__all__魔术变量来提供使用help后应该描述的事情列表,让mymodule.py为文件,内容

__all__ = ['func1','func2']
def func1():
'''first function for user'''
return 1
def func2():
'''second function for user'''
return 2
def func3():
'''function for internal usage'''
return 3

然后

import mymodule
help(mymodule)

给输出

Help on module mymodule:
NAME
mymodule
FUNCTIONS
func1()
first function for user
func2()
second function for user
DATA
__all__ = ['func1', 'func2']
FILE
<path to mymodule.py here>

相关内容

  • 没有找到相关文章

最新更新