在包上调用Pythonhelp()
函数时,我得到以下结果:
__init__.py
中指定的文档字符串的内容。- 包含所有模块的包内容列表
- 包的版本
__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>