(Python)classmethodの返り値の型として自身の型を使う
検証環境
python version: 3.8.2
説明
class MyType:
@classmethod
def from_name(cls, name: str) -> MyType:
t = cls()
t.__name = name
return t
のようなコードを書くと、python3.8.2では -> MyType
の部分がUnresolved referenceになってしまう。
これを回避するには以下のようにする。
from __future__ import annotations # この行を追加する
class MyType:
@classmethod
def from_name(cls, name: str) -> MyType:
t = cls()
t.__name = name
return t
python 3.7からfuture behaviorとして追加されているので、それ以降ならこれだけで解決可能。
参考
2020-05-27