Аннотация типа Python, где второй аргумент относится к первомуPython

Программы на Python
Anonymous
Аннотация типа Python, где второй аргумент относится к первому

Сообщение Anonymous »

У меня есть приведенная ниже функция Python, для которой я пытаюсь определить правильные аннотации. Второй аргумент получает тип от первого аргумента.

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

        def q( type, func : Callable[[type], str]) -> bool:
nonlocal text
if isinstance( node, type ):
text = func( node )
return True
return False
Это часть шаблона посетителя, который сопоставляет объект с правильным типом, а затем отправляет его функции, принимающей этот тип. Я использую его, как показано ниже.

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

        _ = \
q( doc_tree.Block, self._get_block ) or \
q( doc_tree.Section, self._get_section ) or \
q( doc_tree.Text, self._get_text ) or \
fail()
Функции выглядят следующим образом:

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

    def _get_section( self, node : doc_tree.Section ) -> str:
Вызов q( doc_tree.Section, self._get_section ) завершается неудачей в mypy с ошибкой:

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

error: Argument 2 to "q" has incompatible type "Callable[[Section], str]"; expected "Callable[[type], str]"
Как правильно аннотировать типы в функции q?

Подробнее здесь: https://stackoverflow.com/questions/566 ... -the-first

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