使用PEP 484,有没有办法说明类方法返回该类的实例?
例如
@dataclass
class Bar:
foo: str
@classmethod
def new_from_foo(cls, foo) -> Bar
...
或
@classmethod
def new_from_foo(cls, foo) -> cls
答案 0 :(得分:3)
技巧是使用TypeVar
将cls
参数连接到返回注释:
from typing import TypeVar, Type
T = TypeVar('T')
class Bar:
@classmethod
def new_from_foo(cls: Type[T], foo) -> T:
...