Как правильно описать тип кастомной записи? - PullRequest
0 голосов
/ 07 августа 2020

У меня есть собственный класс Record. Его можно инициализировать с помощью dict. Могу ли я описать свой класс с помощью набора текста, чтобы IDE понимала наличие этих полей в записи? Пример:

rec = Record({'a':1})
rec.Get('a') # i'd like autocomplete in this place

1 Ответ

0 голосов
/ 05 сентября 2020

это можно решить с помощью TypeVar и Generi c

, мы определяем 2 типа vars, одну для ключа и одну для значения. на самом деле это очень похоже на то, как на самом деле dict будет иметь подсказку типа.

from typing import Dict, TypeVar, Generic

K = TypeVar("K")
V = TypeVar("V")

class Record(Generic[K, V]):
    def __init__(self, val: Dict[K, V]) -> None: ...
    def get(self, key: K) -> V: ...

также, если ключ всегда должен быть строкой, вы можете просто использовать str вместо K

from typing import Dict, TypeVar, Generic

V = TypeVar("V")

class Record(Generic[V]):
    def __init__(self, val: Dict[str, V]) -> None: ...
    def get(self, key: str) -> V: ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...