Логика проста, и код выполняется без ошибок, но и pylance, и mypy жалуются, что мои возвращаемые типы не соответствуют типу, указанному в подпись.
Код: Выделить всё
# python 3.9.5
from typing import TypeVar, Union
class Foo:
pass
class FooBuilder:
def build(self) -> Foo:
return Foo()
_F = TypeVar("_F", bound=Foo)
_FB = TypeVar("_FB", bound=FooBuilder)
def get_foo(x: Union[_F, _FB]) -> _F:
if isinstance(x, Foo):
return x #
Подробнее здесь: [url]https://stackoverflow.com/questions/76469284/what-is-the-proper-type-hinting-for-this-function-which-accepts-either-an-instan[/url]