如何让__init__.py中导入的内容在Python help()命令中可见
问题解决方法
原因说明
Python内置的help()函数生成模块文档时,默认会过滤掉从其他模块导入的非原生成员,只有模块原生定义的成员、以及你显式声明的公开接口成员才会被展示。你通过from .example import *导入的add_one属于跨模块导入的成员,没有显式声明为公开接口就会被help()过滤。
解决步骤
只需要在mymodule/__init__.py中添加模块级的__all__变量,把所有你想要暴露在模块根层级的成员都列入即可,修改后的__init__.py代码如下:
from .example import * # 显式声明模块公开接口,所有需要对外暴露的根层级成员都写入该列表 __all__ = ["add_one", "bar", "foo"] foo = "FOO" def bar(): return 1
验证效果
修改后重新导入模块,再执行help(mymodule),就能在FUNCTIONS分类下看到add_one的条目,原有模块调用、dir()查询的逻辑完全不受影响。
如果想要更可控的导入逻辑,也可以把通配符导入替换为显式导入:
from .example import add_one __all__ = ["add_one", "bar", "foo"] foo = "FOO" def bar(): return 1
内容的提问来源于stack exchange,提问作者Slowpoke
相关产品推荐
相关产品推荐

