如何注释 class 方法 returns class 的一个实例
How to annotate that a classmethod returns an instance of that class
使用 PEP 484,有没有办法注释 class 方法 returns class 的一个实例?
例如
@dataclass
class Bar:
foo: str
@classmethod
def new_from_foo(cls, foo) -> Bar
...
或
@classmethod
def new_from_foo(cls, foo) -> cls
诀窍是使用 TypeVar
将 cls
参数连接到 return 注释:
from typing import TypeVar, Type
T = TypeVar('T')
class Bar:
@classmethod
def new_from_foo(cls: Type[T], foo) -> T:
...
使用 PEP 484,有没有办法注释 class 方法 returns class 的一个实例?
例如
@dataclass
class Bar:
foo: str
@classmethod
def new_from_foo(cls, foo) -> Bar
...
或
@classmethod
def new_from_foo(cls, foo) -> cls
诀窍是使用 TypeVar
将 cls
参数连接到 return 注释:
from typing import TypeVar, Type
T = TypeVar('T')
class Bar:
@classmethod
def new_from_foo(cls: Type[T], foo) -> T:
...