Как вывести общий класс Python на основе ввода метода?Python

Программы на Python
Anonymous
Как вывести общий класс Python на основе ввода метода?

Сообщение Anonymous »

Я хочу написать конвейер с использованием Python следующим образом:

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

from collections.abc import Callable
from typing import Generic, TypeVar

T = TypeVar("T")
U = TypeVar("U")
V = TypeVar("V")

class Pipeline(Generic[T, U]):
def pipe(self, _cb: Callable[[U], V]) -> "Pipeline[T, V]":
...

def int_to_str(x: int) -> str:
return str(x)

a = Pipeline()
a = a.pipe(int_to_str)
# the inferred type is Pipeline[Unknown, str]
# I would like it to be Pipeline[int, str]
Может ли Python понять, что, поскольку первая переданная функция — это функция, которая принимает на вход int, то первым универсальным типом конвейера должно быть int?
Я пытался поиграть с @overload и т. д., но у меня ничего не получилось.

Подробнее здесь: https://stackoverflow.com/questions/774 ... thod-input

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