如何解決Python類型提示中的循環依賴?

Susan Sarandon
發布: 2024-10-21 21:48:31
原創
556 人瀏覽過

How to Resolve Circular Dependencies in Python's Type Hints?

類型提示:解決循環依賴

在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>
登入後複製

嘗試實例化 Client 將會失敗,並出現 NameError: name 'Client' is not定義。

使用前向引用

解決此循環依賴關係的一種方法是在類型提示中使用前向引用。這是透過為尚未定義的類別提供字串名稱來完成的:

<code class="python">class Server:
    def register_client(self, client: 'Client')
        pass</code>
登入後複製

推遲註解解析

Python 3.7 中引入的另一個解決方案是完全推遲註解的運行時解析。這是透過在模組頂部添加以下導入來實現的:

<code class="python">from __future__ import annotations</code>
登入後複製

隨著註解解析的推遲,註解將儲存為表達式的抽象語法樹 (AST) 的字串表示形式。您可以使用 Typing.get_type_hints() 來解析這些註解並解析上例中使用的前向參考。

有關更多詳細信息,請參閱 PEP 563:推遲對註釋的評估。

以上是如何解決Python類型提示中的循環依賴?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!