不同目录下的不同导入结果

发布于 2021-01-29 17:58:24

我有一个包MyPak和一个模块MyMod。这些文件的组织方式如下:

somedir / MyPak / MyMod.py

在MyMod.py中,只有一个名称也为MyMod的类

在somedir / MyPak目录中,如果我执行导入操作:

import MyMod

我将MyMod作为模块导入。

但是在somedir /目录中,如果我这样做

from MyPak import MyMod

我将MyMod作为类而不是模块导入。为什么会这样呢?

关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    此行为表明您有一个文件:

    somedir/MyPak/__init__.py
    

    其中,您执行以下操作:

    from MyMod import *
    

    当您import MyPak从中导入时,__init__.py同样地,当您from MyPak import something尝试从包的名称空间中提取时,它会在其中__init__.py

    因为您是从MyModinside导入所有内容的__init__.py,所以现在该类在MyPak包中是本地的,并屏蔽了MyMod.py文件。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看