Как написать возвращаемое значение для метода класса, возвращающего класс?
[!Warning] FYI В Python 3.11 завезли тип
Self
, который делает все то же самое
Допустим есть абстрактный класс, который делает сущность из json:
class WithFromJson:
@classmethod
def from_json(cls, json_: dict) -> ?:
...
И его наследник:
import dataclasses
@dataclasses.dataclass()
class Resp(WithFromJson):
code: int
msg: str
def from_json(self, json_: dict) -> Resp:
return {
'code': json_['code'],
'msg': json_['msg'],
}
Как написать тайпинг для WithFromJson
?
Использовать TypeVar
:
from typing import TypeVar
class WithFromJson:
@classmethod
def from_json(cls, json_: dict) -> 'WithFromJsonT':
...
WithFromJsonT = TypeVar('WithFromJsonT', bound=WithFromJson)