I use Functools.update_wrapper() in my decorator, but it seems that update_wrapper only overwrites function attributes (such as __doc__ , __name__ ), but does not affect the help() function.
I know these answers , but they do not work with the decorator class.
Here is my function.
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
Here is the conclusion
>>> 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: | | __dict__ | dictionary for instance variables (if defined) | | __weakref__ | list of weak references to the object (if defined)
Sounds like a mistake, but how can I fix it?
user3664218 Sep 22 '14 at 11:47 2014-09-22 11:47
source share