, Python 2 @functool.wraps() __wrapped__, , . , Python 3.2, bug , 3.4, v3.4 wraps().
, my_decorator(), , wraps - , , , . ( Python 2 3):
( , , functools.wraps, , functools , .)
import functools
import inspect
import sys
if sys.version_info[0:2] >= (3, 4):
wraps = functools.wraps
else:
def wraps(wrapped, assigned=functools.WRAPPER_ASSIGNMENTS,
updated=functools.WRAPPER_UPDATES):
def wrapper(f):
f = functools.wraps(wrapped, assigned, updated)(f)
f.__wrapped__ = wrapped
return f
return wrapper
def my_decorator(some_function):
@wraps(some_function)
def wrapper():
some_function()
return wrapper
@my_decorator
def my_func():
print("supposed to return this instead!")
return
print(inspect.getsource(my_func.__wrapped__))
:
@my_decorator
def my_func():
print("supposed to return this instead!")
return