首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何构造模块以避免诸如“导入module.module.module”之类的事情

如何构造模块以避免诸如“导入module.module.module”之类的事情
EN

Stack Overflow用户
提问于 2015-03-23 23:37:31
回答 1查看 117关注 0票数 4

我有一个模块,结构如下:

代码语言:javascript
复制
/module
    __init__.py
    /submod_1
        __init__.py
        submod_1_class.py
    /submod_2
        __init__.py
        submod_2_class.py

但是,我发现在submod_1_class.py中导入一个类非常烦人,因为:

代码语言:javascript
复制
from module.submod_1.submod_1_class import my_class

我希望能打字的是:

代码语言:javascript
复制
from module import my_class

我浏览了site-packages文件夹,查看了像numpy这样的流行模块,但是我还没有弄清楚如何实现,例如:

代码语言:javascript
复制
import numpy
a = numpy.array([1,2,3,4,5])

numpy数组对象的定义深埋在numpy包的几个子文件夹中时,可以使用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-24 00:08:05

您可以使用__init__.py文件来定义可以从给定模块编辑的import。例如,在您的结构中添加一个非常简单的附加项,就是从Class中提取submod_1_class,这样外部用户就可以简单地使用from module import Class

代码语言:javascript
复制
/module
    __init__.py
        from submod_1 import Class
    /submod_1
        __init__.py
            from submod_1_class import Class
        submod_1_class.py
    /submod_2
        submod_2_class.py

例如,在numpy中,顶级__init__.py包含读取以下内容的一条线

代码语言:javascript
复制
from .core import *

这意味着/core/__init__.py中定义的所有内容都可以直接在numpy命名空间中获得,即使它实际上可能隐藏在某种复杂的结构中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29222428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档