У меня есть класс с именем Client
, который использует модуль requests
для взаимодействия со службой. У него есть такие методы, как:
def get_resource(self, url, headers):
response = requests.get(url, headers, auth=self.auth)
return response
Теперь я хочу вызывать некоторые методы до и после каждого вызова модуля запросов. Что-то вроде:
def get_resource(self, url, headers):
self.add_request_header(headers)
response = requests.get(url, headers, auth=self.auth)
self.process_response_headers()
return response
У меня проблемы с поиском способа сделать это без необходимости переписывать все Client
методы. Самый простой способ - изменить вызовы модуля запроса на вызовы self и добавить вызовы к методам там.
def get_resource(self, url, headers):
response = self.__get(url, headers, auth=self.auth)
return response
def __get(self, headers, auth):
self.add_request_header(headers)
response = requests.get(url, headers, auth=self.auth)
self.process_response_headers()
return response
Но это требует от меня изменения всех сайтов вызовов и дублирования функциональности модуля запросов. Я пытался использовать декораторы, чтобы добавить эти вызовы методов к функциям модуля запроса, но застрял в том, как передать self в декоратор.
Я уверен, что есть элегантный способ сделать это в Python.