Каково правильное указание типа для этой функции, которая принимает экземпляр или построитель и возвращает экземпляр?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Каково правильное указание типа для этой функции, которая принимает экземпляр или построитель и возвращает экземпляр?

Сообщение Anonymous »

Вот простая функция, которая получает либо экземпляр Foo, и в этом случае она возвращает экземпляр, либо экземпляр класса, который может построить Foo, и в этом случае она создает и возвращает новый экземпляр Foo.
Логика проста, и код выполняется без ошибок, но и 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]
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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