__py导入还公开了我使用的模块,而不仅仅是我自己的类

2024-04-25 01:12:45 发布

您现在位置:Python中文网/ 问答频道 /正文

关于python导入,有一些东西我没有掌握。我读了几十篇文章,但没有找到一个令人满意的答案。情况是这样的:

我正在写一个由几个模块组成的包。假设包名为pack1。在__init__.py文件中,为了公开我在模块中定义的类和函数,我写了:

    from .module1 import *
    from .module2 import *
    ...

现在,在模块1中:

^{pr2}$

我的问题是当我

    import pack1

在另一个项目中,我在pack1的命名空间中看到sqrt。我是否必须分别导入__init__.py文件中的100个类中的每一个,以避免这种情况并保持我的命名空间干净?我是否必须对__init__.py中的inspect模块进行一些修改,以便识别定义的类而不是导入的类(我认为这将非常难看)?或者,正如我所怀疑的那样,我在如何处理模块结构或import语句方面弄错了什么?在


Tags: 模块文件函数答案frompyimport定义
1条回答
网友
1楼 · 发布于 2024-04-25 01:12:45

通配符导入import该模块中全局命名空间中定义的所有。它不区分“本地”类、导入的模块、函数或变量。在

有两种解决方法:

  1. 完全导入您想要的内容,而不是使用wildwards。根据import this,显式优于隐式。在
  2. 使用特殊的__all__变量来定义当通配符导入模块时应该导入什么。见Can someone explain __all__ in Python?

相关问题 更多 >