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

Подскажите пожалуйста, как конкретизировать тип из union если я какбы

заведомо знаю какой он

Типа есть функция


def func() -> Foo | Bar


И в другом месте я пишу


a = func()


Но точно знаю, что это Foo

Как мне это указать?

12 ответов

28 просмотров

Откуда знаешь?

Убрать юнион, взять typing.overload. или вообще делать не так

Есть typing.cast, но это прям совсем крайний случай

Źmićer-Rubinštejn Автор вопроса
Tishka17
Убрать юнион, взять typing.overload. или вообще де...

Ну вот у меня идея (может быть дурная) - сделать __getitem__ и в зависимости от того что передаешь в value - он возвращает разные типы.

Źmićer-Rubinštejn Автор вопроса
Tishka17
Оверлоад

К сожалению arg в _getitem__ одного и того же типа

покажи больше кода

decorator-factory
покажи больше кода

Если ты в конкретном месте знаешь по какой-то причине, что там Foo: a) assert value is Foo — проверить в рантайме b) value = typing.cast(Foo, value) — без проверки в рантайме c) подумать, как сделать так, чтобы юниона всё-таки не было — зависит от кода

Źmićer-Rubinštejn Автор вопроса
decorator-factory
покажи больше кода

class A: pass class B: pass mapping = { “a”: A, “b”: B } class Foo: def __getitem__(self, arg): return mapping[arg]

Źmićer Rubinštejn
class A: pass class B: pass mapping = { “a...

class Foo: @overload def __getitem__(self, arg: Literal["a"]) -> A: ... @overload def __getitem__(self, arg: Literal["b"]) -> B: ... def __getitem__(self, arg: str) -> A | B: return mapping[arg]

Źmićer-Rubinštejn Автор вопроса
decorator-factory
class Foo: @overload def __getitem__(self,...

Теперь надо понять как сделать это автоматически чтобы был single source of truth - mapping

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта