170 похожих чатов

@Tishka17, подскажи, а как аннотировать get, __getitem__ чтобы оно нормально

работало с mypy?
Если делать свои аннотации ловлю Signature of "get" incompatible with supertype "dict", если пойти по пути создания TypeVar аналогичных typeshed'y, результат тот же.


На банальный

class CustomDict(dict[str, str]):

def get(self, __key: _KT, default: Optional[_VT_co | _T] = None) -> _VT_co | _T:
try:
return super(CustomDict, self).get(__key, default)
except KeyError:
return default


a = CustomDict({"key": "value"})

я ловлю

folder\test2.py:19: error: Returning Any from function declared to return "Union[_VT_co, _T]" [no-any-return]
folder\test2.py:19: error: No overload variant of "get" of "dict" matches argument types "_KT", "Union[_VT_co, _T, None]" [call-overload]
folder\test2.py:19: note: Possible overload variants:
folder\test2.py:19: note: def get(self, str, /) -> Optional[str]
folder\test2.py:19: note: def [_T] get(self, str, Union[str, _T], /) -> Union[str, _T]
folder\test2.py:21: error: Incompatible return value type (got "Union[_VT_co, _T, None]", expected "Union[_VT_co, _T]") [return-value]



этотому вообще можно дать аннотации или в этом нет смысла?

3 ответов

25 просмотров

а зачем так вообще, переопредели __missing__

Vadim- Автор вопроса
Tishka17
а зачем так вообще, переопредели __missing__

да не в missing дело, а в принципе как это аннотировать :)

DefaultT = TypeVar("DefaultT") class CustomDict(Dict[str, str]): @overload def get(self, key: str, /) -> Optional[str]: pass @overload def get( self, key: str, /, default: Union[str, DefaultT], ) -> Union[str, DefaultT]: pass def get( self, key: str, /, default: Union[str, DefaultT, None] = None, ) -> Union[str, DefaultT, None]: try: return super().get(key, default) except KeyError: return default

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта