Bom dia,
minha dúvida é a respeito do uso de typing. Gostaria de aplicar o Union para tipar o atributo imposto da def realiza_calculo.
Este atributo pode receber duas funções que foram importadas (from impostos import calcula_ICMS, calcula_ISS)
Coloquei o Union em uma variável function_imp (function_imp = Union[calcula_ICMS, calcula_ISS])
Posteriormente realizei a tipagem na def realiza_calculo
def realiza_calculo(self, orçamento: Orcamento, imposto: function_imp) -> None:
from typing import Union
from orcamento import Orcamento
from impostos import calcula_ICMS, calcula_ISS
function_imp = Union[calcula_ICMS, calcula_ISS]
class Calculador_de_impostos(object):
def realiza_calculo(
self, orçamento: Orcamento, imposto: function_imp
) -> None:
imposto_calculado: Union[int, float] = 0
imposto_calculado = imposto(orçamento)
print(imposto_calculado)
Dai recebo alguns erros:
Function "impostos.calcula_ICMS" is not valid as a type
Function "impostos.calcula_ISS" is not valid as a type
calcula_ICMS? not callable
calcula_ISS? not callable
Perhaps you need "Callable[...]" or a callback protocol?
Por fim a duvida é como usar Union para tipar um atributo que pode ser duas ou mais, classes ou funções.
Gosto da ideia de que 3 meses irei retornar ao meu código para trabalhar em uma manutenção, ou implementar uma melhoria e poder ver o que são os atributos e as saídas das funções, isso facilita demais a vida, rs.
Desde já agradeço a ajuda.
Obrigado.