小编use*_*218的帖子

Functools.update_wrapper()无法正常工作

Functools.update_wrapper()在装饰器中使用,但似乎update_wrapper只重写函数属性(如__doc__,__name__),但不影响help()函数.

我知道这些答案,但它们不适用于装饰器类.

这是我的功能.

import functools

class memoized(object):

    def __init__(self, func):
        self.func = func
        functools.update_wrapper(self, func)

    def __call__(self, *args):
        self.func(*args)

@memoized 
def printer(arg):
    "This is my function"
    print arg
Run Code Online (Sandbox Code Playgroud)

这是输出

>>> printer.__doc__
This is my function

>>> help(printer)
Help on memoized in module __main__ object:

printer = class memoized(__builtin__.object)
 |  Methods defined here:
 |  
 |  __call__(self, *args)
 |  
 |  __init__(self, func)
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here: …
Run Code Online (Sandbox Code Playgroud)

python decorator python-2.7 functools python-decorators

7
推荐指数
1
解决办法
1883
查看次数