循環インポートを使用した Python での型ヒントの維持
大規模な Python クラスを操作する場合、編成と保守性を向上させるために、クラスを複数のファイルに分割すると有益な場合があります。ただし、型ヒントを保持しながらこれを実現することは、循環インポートが発生する可能性があるため、困難になる可能性があります。
1 つのアプローチには、メイン クラスを参照する mixin クラスで型アノテーションを使用することが含まれます。ただし、これにより、Python では許可されていない循環インポートが発生する可能性があります。
この問題を回避するには、次のいくつかの解決策を使用できます。
-
ガード コード ブロックwith 'TYPE_CHECKING':
- ミックスイン クラスの型注釈付きコードを、'TYPE_CHECKING' 定数をチェックする if ステートメント内で囲みます。
- この定数は次のように設定されます。 (mypy などのツールによる) 型チェック中は True ですが、実行時には False になり、循環依存関係が発生するインポートが実質的に無効になります。
- ただし、これには、型ヒントに文字列として明示的に注釈を付ける必要があります。シンボルは実行時に使用できません。
-
「将来のインポートアノテーションから」の前方宣言を使用します:
- Python 3.7 では、このインポートにより、すべての型注釈を文字列として表すことができるため、明示的な文字列注釈の必要性がなくなり、読みやすさが向上します。
- すべての型ヒントは文字列になり、実行時に評価されないことに注意してください。コードの動作に影響を与える可能性があります。
-
抽象基本クラス (ABC) アプローチを検討してください:
- Mypy では、メインクラスとミックスインの両方が継承する ABC。
- このアプローチは、コード構造と保守性が最も重要である大規模なプロジェクトに適している可能性があります。
以上が循環インポートを使用して Python で型ヒントを維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。