在Python中处理导入周期的最佳方法是什么?

Art*_*nka 4 python python-import

在我们的项目中,我们使用以下模块进行级别"控制":'grid','gridcell','combo'等.网格模块导入gridcell模块,因为网格由单元格组成,而任何单元格都可以在其中包含组合.所以最初我们开始在这些类中使用'from ... import ...'语句,方法如下:

#grid.py
from controls.gridcell import cell
#gridcell.py
from controls.combo import combo
Run Code Online (Sandbox Code Playgroud)

但是在我们开始使用网格作为组合内容之前,这是可以的.一旦我们开始这样做,我们就需要将'from grid import grid'语句添加到'combo.py'中.执行此操作后,我们得到一个导入异常:

from controls.gridcell import gridcell 
ImportError: Cannot import name gridcell 
Run Code Online (Sandbox Code Playgroud)

编辑:

我也试过'import ... as ...'并得到以下错误:

import controls.gridcell as gridcell
AttributeError: 'module' object has no attribute 'gridcell'
Run Code Online (Sandbox Code Playgroud)

我已经阅读了几篇文章,我发现的关于如何解决这个问题的所有内容都是使用'import'语句,例如:

#grid.py
import controls.gridcell
#gridcell.py
import controls.combo
#combo.py
import controls.grid
Run Code Online (Sandbox Code Playgroud)

但这导致我们使用全名,如'controls.gridcell.cell','controls.combo.combo','controls.grid.grid'等.

所以我的问题是 - 有没有其他方法可以做到这一点(因此可以使用较短的名称)或者这是如何解决这个问题的唯一方法?

抱歉,如果我错过了什么

对所有人而言

Ign*_*ams 9

import controls.gridcell as gridcell
Run Code Online (Sandbox Code Playgroud)

等等等

  • 更好的是,对于这个特殊情况:`来自控件导入gridcell`.当您想要本地名称的*不同*名称时,'import as'非常有用. (3认同)