循環インポートを使用しない Python の型ヒント
Python の型ヒントは、コード補完と静的型チェックにおいて貴重な支援を提供します。ただし、循環インポートにより型ヒントを維持しながらクラスを複数のファイルに分割しようとすると問題が発生します。
この問題を解決する 1 つのアプローチは、抽象基本クラス (ABC) を仲介として導入することです。これには、メイン クラスとミックスイン ファイルの両方を変更する必要があります:
main.py:
<code class="python">from abc import ABC from mymixin import MyMixinABC class Main(MyMixinABC): def func1(self, xxx): ...</code>
mymixin.py:
<code class="python">import abc class MyMixinABC(abc.ABC): def func2(self: 'MyMixinABC', xxx): ...</code>
ABC を使用することで、メインクラスとミックスインの間に正式な契約を確立します。型ヒントは、実際のクラス名ではなく ABC を正確に参照できるようになりました。
Python 3.7 ユーザーの場合、PEP 563:
main.py を使用して、より簡潔なアプローチが可能です。
<code class="python">from __future__ import annotations class Main: def func1(self, xxx): ...</code>
mymixin.py:
<code class="python">from __future__ import annotations class MyMixin: def func2(self, xxx): ...</code>
これらの手法を使用すると、循環インポートを防止して利点を維持しながら、クラスを複数のファイルに分割できます。コード内で型ヒントを使用します。
以上が循環インポートの問題を解決し、Python クラス分割で型ヒントを利用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。