我有一个班叫
Client
requests
与服务交互的模块。它有如下方法:
def get_resource(self, url, headers):
response = requests.get(url, headers, auth=self.auth)
return response
现在我想在每次调用requests模块之前和之后调用一些方法。类似于:
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
我很难找到一个不用重写的方法
顾客
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
但这需要我更改所有的调用站点并复制请求模块的功能。我曾试图使用decorators将这些方法调用添加到请求模块函数中,但一直纠结于如何将self传递给decorator。
我相信在Python中有一种优雅的方法可以做到这一点。