我有一个包MyPak和一个模块MyMod。这些文件的组织方式如下:
somedir / MyPak / MyMod.py
在MyMod.py中,只有一个名称也为MyMod的类
在somedir / MyPak目录中,如果我执行导入操作:
import MyMod
我将MyMod作为模块导入。
但是在somedir /目录中,如果我这样做
from MyPak import MyMod
我将MyMod作为类而不是模块导入。为什么会这样呢?
此行为表明您有一个文件:
somedir/MyPak/__init__.py
其中,您执行以下操作:
from MyMod import *
当您import MyPak从中导入时,__init__.py同样地,当您from MyPak import something尝试从包的名称空间中提取时,它会在其中__init__.py
import MyPak
__init__.py
from MyPak import something
因为您是从MyModinside导入所有内容的__init__.py,所以现在该类在MyPak包中是本地的,并屏蔽了MyMod.py文件。
MyModinside
MyMod.py