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

时间:2011-06-16 16:47:31

标签: python python-import

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

#grid.py
from controls.gridcell import cell
#gridcell.py
from controls.combo import combo

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

from controls.gridcell import gridcell 
ImportError: Cannot import name gridcell 

编辑:

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

import controls.gridcell as gridcell
AttributeError: 'module' object has no attribute 'gridcell'

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

#grid.py
import controls.gridcell
#gridcell.py
import controls.combo
#combo.py
import controls.grid

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

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

对不起,如果我错过了什么

Thanx to all

2 个答案:

答案 0 :(得分:9)

import controls.gridcell as gridcell

等。等等。

答案 1 :(得分:2)

您也可以将导入移动到函数中。

def foo():
    from controls.gridcell import cell
    from controls.combo import combo

如果您有init()功能,这可能很方便。