型ヒントと循環依存関係
Python で型ヒントを利用する場合、循環依存関係によって問題が発生し、NameError などのエラーが発生する可能性があります。この例の 1 つは、相互参照する型ヒントに依存する 2 つのクラスを相互にインポートしようとしたときに発生します。
次のコードを考えてみましょう:
<code class="python">class Server: def register_client(self, client: Client) pass class Client: def __init__(self, server: Server): server.register_client(self)</code>
このコードは、サーバー クラスとクライアント クラスを定義しようとします。ここで、サーバーはクライアント オブジェクトを期待し、クライアントはサーバー インスタンスを取得します。ただし、Python は、Server クラスの型ヒントを評価するときに、クライアントがまだ定義されていないため、NameError を発生させます。
この循環依存関係を解決するには、未定義の文字列名を使用して前方参照を使用できます。 class:
<code class="python">class Server: def register_client(self, client: 'Client') pass</code>
これにより、クライアントが後で定義されることが Python に通知され、型ヒントを正しく理解できるようになります。
あるいは、future モジュールの先頭にインポート:
<code class="python">from __future__ import annotations</code>
以上がPython で型ヒントを使用して循環依存関係を克服する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。