2009-05-21 143 views
48

我有两个文件,node.pypath.py,它们分别定义了两个类,NodePathPython中的循环依赖关系

走到今天,为Path定义中引用的Node对象,因此,我曾在path.py文件中完成

from node.py import * 

但是,截至今天,我创建了一个Node的新方法,该方法引用了Path对象。

试图导入path.py当我有问题:我试了一下,当程序运行起来,并呼吁使用NodePath方法,异常上涨约Node没有被定义。

我该怎么办?

+2

重复? http://stackoverflow.com/questions/744373/python-cyclic-imports – 2009-05-21 20:11:43

+2

你想每个文件有一个类?这就是为什么这种情况很少发挥作用。 – 2009-05-21 20:26:58

回答

84

Importing Python Modules是一篇很好的文章,它解释了Python中的循环导入。

解决此问题的最简单方法是将路径导入移动到节点模块的末尾。

13

另一种方法是仅在功能中导入两个模块中的一个,而在另一个中则需要此功能。当然,如果你只需要它在一个或少数几个功能中,这个效果最好:

# in node.py 
from path import Path 
class Node 
    ... 

# in path.py 
class Path 
    def method_needs_node(): 
    from node import Node 
    n = Node() 
    ...