不幸的是,我正在使用 python 2.4(不是选择),所以 2.5 中添加的任何美妙的东西(例如 functools)都不能帮助我
我想包装一个函数,但是让它在你做 help(wrapper) 时看起来是它包装的函数
我通过做部分实现了这一点
def a():
"""a's docstring"""
pass
def wrapper():
a()
wrapper.func_name = a.func_name #or should this use __name__ ?
wrapper.func_doc = a.func_doc #or should this use __doc__ ?
现在help(wrapper)
显示a
函数名称和a
文档字符串。除了感觉 hacky 之外,这不包括以下情况下的函数参数:
def b(x, y, z):
return a+b+c #or whatever
def wrapper(*args, **kwargs):
#do something with the arguments
return b(*args **kwargs)
help(wrapper)
导致这b(*args, **kwargs)
显然不是我想要的。除非它嵌套在某个地方,否则似乎没有任何属性dir(a)
可以帮助我。
编辑:如果您可以使用 pypi,请查看有助于解决此问题的装饰器模块。