Ошибка типа: объект ABCMeta не подлежит подписке на CallablePython

Программы на Python
Anonymous
Ошибка типа: объект ABCMeta не подлежит подписке на Callable

Сообщение Anonymous »

У меня проблема с совместной работой Python 3.8 и mypy. Рассмотрим этот код:

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

from collections.abc import Callable

def feeder(get_next_item: Callable[[], str]) -> str:
return get_next_item()
Хотя mypy одобряет этот код, его запуск с использованием Python 3.8 приводит к ошибке

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

Traceback (most recent call last):
File "mypytest.py", line 3, in 
def feeder(get_next_item: Callable[[], str]) -> str:
TypeError: 'ABCMeta' object is not subscriptable
Итак, давайте попробуем что-нибудь еще:

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

from collections.abc import Callable

def feeder(get_next_item: Callable) -> str:
return get_next_item()
На этом этапе python3.8 будет работать нормально, но mypy скажет

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

mypytest.py:4: error: Returning Any from function declared to return "str"
Есть ли какой-нибудь выход из этой ловушки, кроме использования #type: ignore при возврате?


Подробнее здесь: https://stackoverflow.com/questions/672 ... n-callable

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