Función sobrecargada en Python.
Estoy teniendo problemas para entender la forma más clara de hacer esto. Me gustaría una función llamada set_delay()
que acepte una variedad de parámetros. Tengo 3 tipos diferentes de “tipos de retraso” que se pueden establecer: constante, uniforme y normal. Esto es lo que tengo actualmente:
def set_delay_constant(delay):
continuar
def set_delay_uniform(min_delay, max_delay):
continuar
def set_delay_normal(mean, std_dev, timeout):
continuar
El problema que tengo con lo anterior es que aproximadamente el 80% del código en cada función se repite. Algunas ideas que he visto son:
def set_delay(delay_type, delay=None, min_delay=None, max_delay=None, mean=None, std_dev=None, timeout=None):
continuar
Pero cuando necesito ampliar esto con más tipos de retraso, puedo ver que esto se vuelve muy largo y difícil de leer. ¿Cuál es la forma más “pythonica” de hacer esto? ¡Gracias!
davy.ai
Una forma de hacer que la función
set_delay()
sea más concisa y modular podría ser utilizar la sobrecarga de funciones, también conocida como sobrecarga de métodos en la programación orientada a objetos. Dado que Python no admite la sobrecarga de métodos como otros lenguajes de programación, podemos utilizar declaraciones condicionales o bloques if-else para implementarlo en Python.Aquí hay un ejemplo que utiliza la sobrecarga de funciones para implementar la función
set_delay()
:En este ejemplo, la función
set_delay()
toma un argumentodelay_type
y un número variable de argumentos utilizando la sintaxis*args
. Dependiendo del valor dedelay_type
, llama a la función correspondiente con los argumentos dados utilizando nuevamente la sintaxis*args
.Utilizando este enfoque, podemos agregar fácilmente más tipos de retardo sin hacer que el código sea más largo y difícil de leer. También podemos reutilizar las mismas funciones para diferentes casos de uso, lo que hace que el código sea más modular y escalable.