スポンサーリンク
概要
Pythonの型アノテーションでメソッドの戻り値に自分自身の型を扱いたい場合のメモ
スポンサーリンク
説明
自身をそのまま返す場合
typingのSelfをインポートして、型アノテーションで指定すれば良い。
1 2 3 4 5 6 7 |
from typing import Self class Data value: str def hoge(self) -> Self: return self |
別のインスタンスを返す場合
同様な方法でSelfをアノテーション指定するとMypyに怒られてしまう。
(Incompatible return value type (got "ReviewState", expected "Self"))
1 2 3 4 5 6 7 |
from typing import Self class Data value: str def hoge(self) -> Self: return Data() //これだとMypyに怒られる |
下記のように型名をダブルクォートで囲んだものを指定することで解決する。
1 2 3 4 5 6 7 |
from typing import Self class Data value: str def hoge(self): -> "Data": return Data() |