【发布时间】:2012-08-01 23:26:24
【问题描述】:
Twython 模块在内部使用 requests 模块。
我想包装/装饰请求的 requests.post(*k, **kw) 方法,以便 Twython 进行 request.post(...) 调用的所有内容都将被透明地装饰/包装,而不会干扰 Twython 模块。
如果我编辑请求代码库会很容易,但我很好奇如何解决将装饰器添加到已定义函数/方法的一般问题。
import requests
def magic_wrapper_doodad(...)
...
...
requests.post = magic_wrapper_doodad(my_function, requests.post) # plz?
import Twython
# thanks to the above magic, requests.post is wrapped just as if it was defined like:
@decorator
def trace(f, *args, **kw):
print("calling %s with args %s, %s" % (f.__name__, args, kw))
return f(*args, **kw)
...
... #inside requests.py now:
@trace
def post(self, *args, **kw):
...
如何编写magic_wrapper_doodad() - 或一些替代代码 - 以便我可以像这样装饰代码?
【问题讨论】:
标签: python class decorator wrapper python-decorators