У меня есть функция Python, fetch_data
, которая идет и удаляет удаленный API, захватывает некоторые данные и возвращает их в объект ответа. Это выглядит примерно так:
def fetch_data(self, foo, bar, baz, **kwargs):
response = Response()
# Do various things, get some data
return response
Теперь, возможно, что данные ответа говорят: "У меня больше данных, позвоните мне с добавленным параметром page
, чтобы получить больше". Таким образом, мне хотелось бы сохранить "Метод вызова" (функция, параметры) в объекте ответа, поэтому я могу иметь Response.get_more()
, который смотрит на сохраненную функцию и параметры, и снова вызывает функцию (почти ) те же параметры, возвращая новый Response
Теперь, если fetch_data
был определен как fetch_data(*args, **kwargs)
, я мог бы просто сохранить (fetch_data, args, kwargs)
в Response
. Однако мне нужно self
, foo
, bar
и baz
беспокоиться - я мог бы просто сохранить (fetch_data, foo, bar, baz, kwargs)
, но это очень нежелательное количество повторений.
По сути, я пытаюсь выяснить, как изнутри функции получить полностью заполненные *args
и **kwargs
, включая функцию с параметрами.