我刚刚注意到这样的相对导入:
from .foo import myfunc
print myfunc # ok
print foo # ok
导入 foo 和 myfunc。这种行为是否记录在任何地方?我可以禁用它吗?
- 更新
基本上问题如下。
bar/foo/__init__.py
:
__all__ = ['myfunc']
def myfunc(): pass
bar/__init__.py
:
from .foo import *
# here I expect that there is only myfunc defined
main.py
:
import foo
from bar import * # this import shadows original foo
我也可以添加__all__
,bar/__init__.py
但这样我必须在几个地方重复名称。