Python __init__.py,污染较少的命名空间
Python __init__.py, less polluted namespace
我有一个目录结构
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
。)
此行为记录在 chapter 5 of the Python Language Reference 中。如果您真的想要禁用它,您可以在__init__.py
:
中执行此操作
from .baz import do_something
del baz
导入时从 foobar
的命名空间中删除 baz
。
但是,据我所知,这不是常见的做法;您想这样做有什么特别的原因吗?
我有一个目录结构
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
。)
此行为记录在 chapter 5 of the Python Language Reference 中。如果您真的想要禁用它,您可以在__init__.py
:
from .baz import do_something
del baz
导入时从 foobar
的命名空间中删除 baz
。
但是,据我所知,这不是常见的做法;您想这样做有什么特别的原因吗?