En Python es posible que a las variables de extracto de una lista dentro de una llamada a la función

Don212:

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

Azro:

Sólo puede ampliar argspara dar a cada elemento como un parámetro diferente:

def create_resource(func, request, *args):
    response = func(*args, request)
    return response.data

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=388200&siteId=1
Recomendado
Clasificación