類型提示和循環依賴
在Python 中使用類型提示時,循環依賴可能會帶來挑戰,導致諸如NameError 之類的錯誤。當嘗試相互匯入兩個依賴彼此引用的類型提示的類別時,就會出現這種情況。
考慮以下程式碼:
<code class="python">class Server: def register_client(self, client: Client) pass class Client: def __init__(self, server: Server): server.register_client(self)</code>
此程式碼嘗試定義類別 Server 和 Client ,其中伺服器需要一個客戶端對象,而客戶端需要一個伺服器實例。然而,Python 在計算 Server 類別中的類型提示時,會引發 NameError,因為 Client 尚未定義。
要解決此循環依賴關係,我們可以透過對尚未定義的字串名稱使用前向引用class:
<code class="python">class Server: def register_client(self, client: 'Client') pass</code>
這通知Python Client 將在稍後定義,使其能夠正確理解類型提示。
或者,我們可以透過新增來延遲註解的所有執行時間解析🎜>future
在模組頂部匯入:<code class="python">from __future__ import annotations</code>
以上是如何在 Python 中使用型別提示克服循環依賴?的詳細內容。更多資訊請關注PHP中文網其他相關文章!