Код: Выделить всё
class A(abc.ABC):
pass
class B(A):
pass
class C(A):
pass
def fn_b(b: B) -> None:
pass
def fn_c(c: C) -> None:
pass
d : dict[type[A], Union[Callable[[A], None], Callable[[B], None]]] = {
B: fn_b,
C: fn_c,
}
Есть ли лучший способ ввести d, чем массивный Союз? Опцией может быть dict[type[A], Callable[..., None]], но, очевидно, это не означает, что Callable должны принимать только подклассы A.< /p>
Функции fn_* предназначены для отделения от классов B, C и т. д. Поэтому перемещение их в методы не решит проблему.
Подробнее здесь: https://stackoverflow.com/questions/793 ... -overarchi