functools.wraps
在 python 2.4 中不可用。在 python 2.4 中是否有任何其他模块可以代替这个模块?
问问题
967 次
2 回答
8
您可以从 Python2.5 复制 functools 代码并使其在 Python2.4 中工作,只需进行微小更改(用lambda替换partial): http ://hg.python.org/cpython/file/b48e1b48e670/Lib/functools .py#l15
这是部分的简单替换:
def partial(func, *args, **kwds):
"Emulate Python2.6's functools.partial"
return lambda *fargs, **fkwds: func(*(args+fargs), **dict(kwds, **fkwds))
于 2012-09-05T05:21:32.797 回答
0
详细阐述 Raymond Hettinger 的回答:
WRAPPER_ASSIGNMENTS = ('__module__', '__name__', '__doc__')
WRAPPER_UPDATES = ('__dict__',)
def wraps(wrapped, assigned=WRAPPER_ASSIGNMENTS, updated=WRAPPER_UPDATES):
def partial(func, *args, **kwds):
return lambda *fargs, **fkwds: func(*(args+fargs), **dict(kwds,**fkwds))
def update_wrapper(wrapper, wrapped, assigned=WRAPPER_ASSIGNMENTS,
updated=WRAPPER_UPDATES):
for attr in assigned:
setattr(wrapper, attr, getattr(wrapped, attr))
for attr in updated:
getattr(wrapper, attr).update(getattr(wrapped, attr, {}))
return wrapper
return partial(update_wrapper, wrapped=wrapped,
assigned=assigned, updated=updated)
于 2014-09-14T15:57:37.883 回答