Недавно я пытался разработать функцию, которая принимает необязательный аргумент по умолчанию-либо значение, либо вызов, который возвращает значение.
Код: Выделить всё
T = TypeVar("T")
def default_example(default: T | Callable[[], T] | None) -> T:
# stuff
if default is not None:
return default() if callable(default) else default
# more stuff
Однако мой тип Hinter (Pylance) по понятным причинам расстроен, потому что сам тип T также может быть вызовом, а его тип возврата не связан. Есть ли способ изменить эту функцию, чтобы достичь того, что я хочу (значение или вызов или нет) без использования перегрузки или ограничения переменной типа?
Подробнее здесь:
https://stackoverflow.com/questions/795 ... a-callable