VS Code выбирает неправильную перегрузку, когда параметр функции имеет значение по умолчаниюPython

Программы на Python
Ответить
Anonymous
 VS Code выбирает неправильную перегрузку, когда параметр функции имеет значение по умолчанию

Сообщение Anonymous »

Я перегружаю метод, поэтому тип возвращаемого значения различается в зависимости от значения данного параметра bool. Тот же параметр имеет значение по умолчанию ( в моем случае).
Вот упрощенный пример функции для демонстрации:

Код: Выделить всё

import typing

@typing.overload
def fn(val: int, to_none: typing.Literal[True] = ...) -> None: ...

@typing.overload
def fn(val: int, to_none: typing.Literal[False] = ...) -> float: ...

@typing.overload
def fn(val: int) -> float: ...

def fn(val: int, to_none: bool = False) -> float | None:
return None if to_none else float(val)

x = fn(5, to_none=True)

y = fn(6, to_none=False)

z = fn(7)
Моя проблема связана с z. VS Code, похоже, не учитывает значение параметра по умолчанию и считает его None, как если бы True было передано в параметр to_none:
Изображение

Это проблема с моим определением перегрузки или ошибка в VS Code/pylance/etc.?

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

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

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

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

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

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