我有一个目录结构
foobar/
__init__.py
baz.py
__init__.py
只是
from .baz import do_something
和baz.py
def do_something():
return
现在,当我执行import foobar
时,我就可以访问
foobar
foobar.do_something()
好!但是,也有
foobar.baz
尽管从未显式导入。我想它已经与do_something
一起导入了。
是否有一种方法可以将do_something
用作foobar.do_something
而不将foobar.baz
添加到命名空间? (并且无需将所有内容都放在__init__.py
中。)
答案 0 :(得分:1)
此行为记录在chapter 5 of the Python Language Reference中。如果您真的要禁用它,可以在__init__.py
中进行此操作:
from .baz import do_something
del baz
在导入后从baz
的命名空间中删除foobar
。
但是,据我所知,这不是常见的做法;您是否有特定原因要这样做?