ホームページ > バックエンド開発 > Python チュートリアル > Python で囲みクラスを使用してメソッドをタイプヒントするにはどうすればよいですか?

Python で囲みクラスを使用してメソッドをタイプヒントするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-31 06:41:17
オリジナル
138 人が閲覧しました

How Do I Type Hint a Method Using the Enclosing Class in Python?

囲んでいるクラスの型を使用してメソッドを型ヒントするにはどうすればよいですか?

課題:

Python では、囲んでいるクラスのインスタンスを引数として期待し、同じクラスのインスタンスを返すメソッドをタイプヒントする場合、次のようなエラー メッセージが表示される場合があります。エディターまたはコード補完。この問題は、型ヒントの時点でクラスが完全に定義されていない可能性があるという事実に起因します。

解決策:

この課題を解決するには、次のオプションを検討してください。 :

Python 3.11 と from 入力 import Self

Python バージョン 3.11 および後で、 from と入力して import Self を使用して、次のようにメソッドにアノテーションを付けます。

from typing import Self

class Position:
    def __add__(self, other: Self) -> Self:
        ...
ログイン後にコピー

Python 3.7 で from future import アノテーション

を含めることで、アノテーションの延期された評価を有効にします。 from __future__ は、モジュールの先頭にアノテーションをインポートします。これにより、クラス名を使用してヒントを入力できるようになります:

from __future__ import annotations

class Position:
    def __add__(self, other: Position) -> Position:
        ...
ログイン後にコピー

Python < 3.7: 文字列を使用します

3.7 より前の Python バージョンの場合は、型ヒントで囲むクラスを表す文字列を使用します。

class Position:
    def __add__(self, other: 'Position') -> 'Position':
        ...

制限事項

文字列を使用する場合コード補完で機能する可能性がありますが、このアプローチはすべての Python バージョンで完全にサポートされているわけではなく、静的分析で問題が発生する可能性があることに注意することが重要です。 tools.

推奨アプローチ

最適な結果を得るには、Python 3.11 で from type import Self を使用するか、利用可能な場合は Python 3.7 で from __future__ import アノテーションを使用することをお勧めします。これにより、型ヒントが正しく処理され、最新の言語機能と互換性があることが保証されます。

以上がPython で囲みクラスを使用してメソッドをタイプヒントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート