Общий тип Python для функции, которая где-то теряетсяPython

Программы на Python
Ответить
Anonymous
 Общий тип Python для функции, которая где-то теряется

Сообщение Anonymous »

Получена ошибка ввода:
error: Incompatible types in assignment (expression has type "object", variable has type "A | B") [assignment]

С помощью этого кода:
from dataclasses import dataclass
from typing import TypeVar, Mapping, reveal_type

@dataclass
class A:
foo: str = "a"

@dataclass
class B:
bar: str = "b"

Either = A | B

lookup_table: Mapping[str, type[Either]] = {
"a": A,
"b": B
}

reveal_type(lookup_table) # note: Revealed type is "typing.Mapping[builtins.str, Union[type[simple.A], type[simple.B]]]"

T = TypeVar("T")

def load(lookup_table: Mapping[str, type[T]], lookup_key:str) -> T:
con = lookup_table[lookup_key]
return con()

example_a: Either = load(lookup_table, "a") # error: Incompatible types in assignment (expression has type "object", variable has type "A | B") [assignment]
print(example_a)


Подробнее здесь: https://stackoverflow.com/questions/792 ... -somewhere
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»