Estou trabalhando com o sistema de dicas de tipo do Python e estou tentando criar um alias de tipo para uma função que seja semelhante a um tipo de função existente, mas com um argumento adicional. Aqui está o que tentei:
from typing import Callable
# Original function type
RK_function = Callable[[float, int], int]
# Attempted new function type with an additional int argument
RK_functionBIS = Callable[[*RK_function.__args__[:-1], int], int]
Eu esperava que RK_functionBIS representasse Callable[[float, int, int], int], o que ele faz quando executado diretamente sem verificar com mypy. No entanto, quando executo mypy para verificação de tipo, recebo este erro: text
erro: Alias de tipo inválido: expressão não é um tipo válido [tipo-válido] Q
Até hoje, o Python não suporta extração direta dos
Callable
argumentos de um alias para uso em outro tipo. No entanto, se seu trecho de código for representativo do problema que você está resolvendo, então seusRK_function
s parecem ser completamente feitos de parâmetros somente posicionais , então você pode pelo menos refatorar a parte dos argumentos. Veja mypy Playground :exatamente o mesmo código que dROOOze, mas adicionei um valor concreto para bis