如何注释类方法返回该类python的实例

时间:2018-08-02 07:20:47

标签: python type-hinting python-typing

使用PEP 484,有没有办法说明类方法返回该类的实例?

例如

@dataclass
class Bar:

    foo: str

    @classmethod
    def new_from_foo(cls, foo) -> Bar
        ...

    @classmethod
    def new_from_foo(cls, foo) -> cls

1 个答案:

答案 0 :(得分:3)

技巧是使用TypeVarcls参数连接到返回注释:

from typing import TypeVar, Type

T = TypeVar('T')

class Bar:
    @classmethod
    def new_from_foo(cls: Type[T], foo) -> T:
        ...