2009-05-21 201 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() 
    ...