Estoy intentando crear un común crear función que se ejecuta una llamada de función a un SDK
func: La función SDK se pasa como mi primer parámetro y la función en sí no puede ser editada
solicitud: Se trata de un objeto que cada crear un punto de espera de gama
args: lista de parámetros que variará dependiendo de la función SDK pasado
firmas de función SDK
def create_a(self, create_type_a_details):
def create_b(self, extra_val_one create_type_b_details):
def create_c(self, extra_val_one, extra_val_two, create_type_c_details):
implementación actual
def create_resource(func, request, *args):
try:
if len(args) == 1:
response = func(args[0], request)
elif len(args) == 2:
response = func(args[0], args[1], request)
else:
response = func(request)
return response.data
except ServiceError as e:
log.error("Failed create operation {message}".format(message=e.message))
raise e
No me gusta la solución anterior por razones obvias. Si hay otro SDK función que toma un tercer parámetro antes de crear el objeto de solicitud, que tendrá que añadir un nuevo elif.
¿Hay alguna manera de que pudiera llamar a la función SDK con un conjunto dinámico de parámetros sin necesidad de editar las funciones de SDK para extraer los valores? ¿Puedo usar un Lamba en el interior de la llamada a la función?
gracias Donagh
Sólo puede ampliar args
para dar a cada elemento como un parámetro diferente:
def create_resource(func, request, *args):
response = func(*args, request)
return response.data