ホームページ  >  記事  >  バックエンド開発  >  Python の Mixin クラスを使用した型ヒントの循環インポートの問題を解決するにはどうすればよいですか?

Python の Mixin クラスを使用した型ヒントの循環インポートの問題を解決するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-23 13:35:30775ブラウズ

How to Resolve Cyclic Import Issues for Type Hinting with Mixin Classes in Python?

循環インポートを使用しない 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。