Python で囲まれたクラスの型ヒントを適切に処理するにはどうすればよいですか?
Python で囲まれたクラスの型ヒントを処理する
問題を理解する
囲みクラスを参照するメソッドを定義する場合class を戻り値の型として使用すると、未解決の参照エラーが発生する可能性があります。 Python 3 の次のコードを考えてみましょう:
class Position: def __init__(self, x: int, y: int): self.x = x self.y = y def __add__(self, other: Position) -> Position: return Position(self.x + other.x, self.y + other.y)
Position クラスが __add__ メソッドのスコープ内で定義されていないため、このコードは NameError で失敗します。
Python 3.11 を 'Self' で発行する型:
Python 3.11 以降のバージョンでは、Self 型を使用して型ヒント内で囲んでいるクラスを参照できます:
from typing import Self class Position: def __add__(self, other: Self) -> Self: return Position(self.x + other.x, self.y + other.y)
Python 3.7 with '__future__ import annotations':
Python を使用している場合3.7 以降では、次のインポート ステートメントを追加することで、アノテーションの延期された評価を有効にできます:
from __future__ import annotations
これを有効にすると、モジュールが完全にロードされ、参照が解決されるまで、型ヒントが文字列として保存されます。問題:
class Position: def __add__(self, other: Position) -> Position: return Position(self.x + other.x, self.y + other.y)
Python <3.7:
Python バージョン 3.7 より前の場合、一重引用符を使用して、囲んでいるクラスへの文字列参照を指定できます。
class Position: def __add__(self, other: 'Position') -> 'Position': return Position(self.x + other.x, self.y + other.y)これにより、前方参照が作成されます。クラスが定義されると解決されます。
追加注:
- ダミー定義またはモンキーパッチを使用してアノテーションを追加する場合は、アノテーションがクラスの型を正確に反映していることを確認してください。
- Python 3.10 では、 の延期された評価注釈はデフォルトになる予定でしたが、将来のリリースに延期されました。
以上がPython で囲まれたクラスの型ヒントを適切に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

正規表現は、プログラミングにおけるパターンマッチングとテキスト操作のための強力なツールであり、さまざまなアプリケーションにわたるテキスト処理の効率を高めます。

この記事では、numpy、pandas、matplotlib、scikit-learn、tensorflow、django、flask、and requestsなどの人気のあるPythonライブラリについて説明し、科学的コンピューティング、データ分析、視覚化、機械学習、Web開発、Hの使用について説明します。

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

Pythonでは、文字列を介してオブジェクトを動的に作成し、そのメソッドを呼び出す方法は?これは一般的なプログラミング要件です。特に構成または実行する必要がある場合は...
