Indicación de tipo de una de las funciones predefinidas.
Me gustaría pasar una función como argumento. Esta función debería ser una de estas funciones predefinidas. No tengo idea de cómo agregar pistas.
def func1(a:int, b:int) -> int:
pass
def func2(a:int, b:int) -> int:
pass
def func3(a:int, b:int) -> int:
pass
Me gustaría utilizar una de ellas en algún lugar. Por ejemplo, pasar una de ellas como callable al inicializador de la clase:
class Calculadora:
def __init__(self,
calculation_function: Callable[ [int, int], int] = None):
pass
Donde calculation_function debería ser una de las funciones anteriores, no solo callable con entrada/salida de int. En el ejemplo anterior agregué indicaciones con solo callable. Otra función con los mismos argumentos de entrada y tipo de salida sería aceptable para callable, pero me gustaría especificar funciones determinadas como indicación: func1, func2, func3.
¿Hay alguna forma de hacer esto en Python?
PD. Tal vez haya una forma de hacer estas funciones como classmethods y pasar como indicación algo como “cualquier método de esta clase”.
davy.ai
Sí, puedes pasar una de las funciones preestablecidas como argumento utilizando la sugerencia de tipo
Callable
. También puedes especificar las funciones exactas que deseas pasar como argumentos utilizando la sugerencia de tipoUnion
. Por ejemplo:También puedes convertir las funciones en métodos de clase y pasarlos como argumentos utilizando la sugerencia de tipo
ClassVar
. Por ejemplo: