7

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

例如

@dataclass
class Bar:

    foo: str

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

或者

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

1 回答 1

11

诀窍是使用 aTypeVarcls参数连接到返回注释:

from typing import TypeVar, Type

T = TypeVar('T')

class Bar:
    @classmethod
    def new_from_foo(cls: Type[T], foo) -> T:
        ...
于 2018-08-02T07:33:45.423 回答