Как ввести функцию уменьшения аннотации?Python

Программы на Python
Anonymous
Как ввести функцию уменьшения аннотации?

Сообщение Anonymous »

Я пишу очень тонкую оболочку поверх списка и хочу определить метод с именем уменьшить, но я изо всех сил пытаюсь правильно его аннотировать, чтобы pylance, mypy и pylint прекращают свои жалобы всякий раз, когда я использую этот метод или даже определяю его.
Я был встревожен, осознав, что почти ни одна из встроенных библиотек Python не является типовой. с аннотациями.
Это моя попытка реализации:

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

    def reduce(self, func: Callable[[list[T], list[T]], list[T]] = lambda x, y: x + y, default: Optional[T] = None) -> 'List[T]':  # type: ignore
from functools import reduce
if default is None: return List(reduce(func, self.list))  # type: ignore
return List(reduce(func, self.list, default))  # type: ignore
Это не удается, если мой список на самом деле представляет собой список строк

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

a: List[str] = List(['a', 'b'])
b = a.reduce(lambda x, y: x + y)
Очевидно, что здесь средства проверки типов и линтеры говорят, что они ожидают list[T], пока я передал str.

Подробнее здесь: https://stackoverflow.com/questions/770 ... e-function

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