循環導入依賴:一個常見的Python 陷阱
遇到循環導入依賴可能會令人沮喪,特別是在模組經常互在連的Python 中。當一個包的 __init__.py 導入另一個包,而第二個包中的檔案嘗試導入第一個包時,就會出現這樣的範例。
考慮提供的目錄結構:
a/ __init__.py b/ __init__.py c/ __init__.py c_file.py d/ __init__.py d_file.py
在 a 中__init__.py,導入c包。然而,位於 c 套件中的 c_file.py 嘗試導入 a.b.d。這種循環依賴會導致運行時出現錯誤,聲稱 b 不存在。
解決問題
一個解決方案是延遲導入。例如,在 a/__init__.py 中,您可以定義一個函數:
<code class="python">def my_function(): from a.b.c import Blah return Blah()</code>
延遲匯入直到絕對必要時,您可以避免循環依賴。儘管如此,重新考慮您的包裝設計也是謹慎的做法。這種依賴關係有時可能表示設計缺陷或需要重構。
以上是如何解決 Python 中的循環導入依賴:一個常見的陷阱的詳細內容。更多資訊請關注PHP中文網其他相關文章!