Python 中的循環依賴解析
在 Python 中,當模組相互依賴其定義時,可能會遇到循環依賴。當兩個檔案(node.py 和 path.py)分別定義類別 Node 和 Path,每個檔案都引用另一個檔案時,就會出現這樣的情況。
最初,path.py 導入 node.py 來存取 Node目的。然而,最近的修改在 Node 中引入了一個引用 Path 物件的方法。這創建了循環依賴,導致導入 path.py 時出現異常。
有幾種方法可以解決循環依賴:
1。前向引用:
在一個模組中使用前向引用來聲明另一模組的類別名,而無需導入它。在這種情況下,path.py 將聲明帶有前向引用的 Node 類別:
from typing import ForwardRef Node = ForwardRef("Node") class Path: def method_needs_node(self, node: Node): ...
2。延遲導入:
僅在函數內需要時才導入所需的模組。當僅在一個或幾個函數中需要依賴時,這特別合適:
# in node.py from path import Path class Node ... # in path.py class Path: def method_needs_node(): from node import Node n = Node() ...
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3