Tengo una función de Python, fetch_data
, que va y golpea una API remota, toma algunos datos y los devuelve envueltos en un objeto de respuesta. Se ve un poco como el siguiente:Obtener todos los argumentos y valores pasados a una función
def fetch_data(self, foo, bar, baz, **kwargs):
response = Response()
# Do various things, get some data
return response
Ahora, es posible que los datos de respuesta dice "tengo más datos, me llama con un parámetro page
incrementado a conseguir más". Por lo tanto, esencialmente me gustaría almacenar "The Method Call" (función, parámetros) en el objeto de respuesta, entonces puedo tener un Response.get_more()
que examina la función y los parámetros almacenados, y llama a la función nuevamente con (casi) el los mismos parámetros, que vuelven una nueva Response
Ahora bien, si fetch_data
se definieron como fetch_data(*args, **kwargs)
tan sólo pudiera almacenar (fetch_data, args, kwargs)
en response
. Sin embargo, tengo que preocuparme por self
, foo
, bar
y baz
, podría simplemente almacenar (fetch_data, foo, bar, baz, kwargs)
, pero esa es una cantidad de repetición muy indeseable.
Básicamente, estoy tratando de encontrar la forma de, dentro de una función, obtener un *args
y **kwargs
completamente poblados, incluyendo los parámetros nombrados de la función.
¿Por qué no pasar foo, bar, baz y kwargs al constructor de Response() para que luego llame a response.get_more() ya tenga esos valores? – kurosch
Porque eso no soluciona el problema; aún tendría que tocar 'Response' si cambié la firma de' fetch_data'. –
Quizás eso sea algo bueno? – kurosch