Предупреждение о вводе Python при переопределении метода с разными возвращаемыми значениями в зависимости от параметровPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Предупреждение о вводе Python при переопределении метода с разными возвращаемыми значениями в зависимости от параметров

Сообщение Anonymous »

Вот пример моей проблемы

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

from typing import Literal, overload

@overload
def do_something(a: str, b: str="", no_return: Literal[False]=False) -> str: ...

@overload
def do_something(a: str, b: str="", no_return: Literal[True]=True) -> None: ...

def do_something(a: str, b: str="", no_return: bool=False) -> str| None:
return None if no_return else "OK"

# The two use cases
a = do_something("") # a should be "OK"
b = do_something("", no_return=True) # b should be None
В этом случае у меня возникла ошибка при первой перегрузке do_something

Перегрузка 1 для " do_something" перекрывает перегрузку 2 и возвращает несовместимый тип

Мне это кажется очень простым использованием набора текста, но я не смог найти способ правильно введите эту функцию. Я нашел еще несколько сообщений о подобных проблемах, но каждый раз ответ был примерно «именно так».
Как это сделать? Я пытаюсь нарушить какое-то основное правило?
Изменить: я добавил параметры в начало метода, так как предлагаемое решение работает только без них.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -depending
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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