Код: Выделить всё
from typing import overload, NamedTuple
class A(NamedTuple):
pass
class B(NamedTuple):
pass
@overload
def frobnicate(arg: A) -> A: ...
@overload
def frobnicate(arg: B) -> B: ...
def frobnicate(arg: A | B) -> A | B:
if isinstance(arg, A):
return A()
elif isinstance(arg, B):
return B()
else:
raise TypeError()
< /code>
Этот код заставляет Mypy излучать: < /p>
error: Overloaded function signatures 1 and 2 overlap with incompatible return types [overload-overlap]
Унаследование от именования , а не от Tuple или dict или obj Поведение из-за чего-то, что я не рассмотрел? )-> A, поэтому я не могу просто использовать Typevar. Я не хотел делать минимальный пример здесь сбивает с толку.
Подробнее здесь: https://stackoverflow.com/questions/793 ... d-2-overla