循環インポートを使用しない Python の型ヒント
問題:
循環依存関係のあるモジュールをインポートすると、次のような問題が発生しますタイプ ヒントを mixin クラスと組み合わせて使用すると、ランタイム例外が発生します。
詳細:
Python 3.4 では、クラスは 2 つのファイル (main.py と mymixin) に分割されます。 .py)、ここで、mymixin.py には、main.py のメイン クラスから継承するミックスイン クラス (つまり、クラス Main(object, MyMixin):) が含まれています。 MyMixin のメソッドの型ヒントでは、戻り値の型を 'Main' として指定する必要があり、循環インポートの問題が発生します。
Python 3.4 の解決策:
循環インポートをバイパスするには型ヒンティングでは、前方宣言を使用したカスタム アプローチが採用されています。 「typing」モジュールの「TYPE_CHECKING」定数を使用すると、型注釈ブロック内の import ステートメントは実行時に無視されます。 「Main」タイプのアノテーションも文字列に変換されて前方宣言されます。
Python 3.7 Solution (PEP 563):
Using the 'from future import アノテーションのインポート ステートメントを使用すると、すべての型アノテーションが文字列になり、実行時評価中にスキップされるため、前方宣言構文がよりクリーンになります。
これらの回避策にもかかわらず、タイプ ヒンティングでミックスインを使用すると、確実に再構築する必要がある場合があります。 PyCharm と mypy の両方の型チェックが期待どおりに機能することを確認します。 Mypy では、メイン クラスとミックスイン クラスの両方が継承する ABC を作成することをお勧めします。
以上がPython の Mixin クラスを使用した型ヒントの循環インポートの問題を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。