ホームページ >バックエンド開発 >Python チュートリアル >Python の型ヒントの循環依存関係を解決するには?
型ヒント: 循環依存関係の解決
Python では、2 つのクラスが型ヒントで相互参照するときに循環依存関係が発生することがあります。これにより、クラスの 1 つをインスタンス化しようとすると、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>
クライアントをインスタンス化しようとすると、NameError で失敗します: name 'Client' is not
前方参照の使用
この循環依存関係を解決する 1 つの方法は、型ヒントで前方参照を使用することです。これは、まだ定義されていないクラスの文字列名を指定することによって行われます。
<code class="python">class Server: def register_client(self, client: 'Client') pass</code>
アノテーション解析の延期
Python 3.7 で導入されたもう 1 つの解決策は、次のとおりです。注釈の実行時解析を完全に延期します。これは、モジュールの先頭に次のインポートを追加することで実現されます:
<code class="python">from __future__ import annotations</code>
注釈の解析が延期されると、注釈は式の抽象構文ツリー (AST) の文字列表現として保存されます。 testing.get_type_hints() を使用すると、これらのアノテーションを解決し、前の例で使用したように前方参照を解決できます。
詳細については、PEP 563: アノテーションの延期された評価を参照してください。
以上がPython の型ヒントの循環依存関係を解決するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。