functools.wraps()

@functools.wraps( wrapped, assigned=WRAPPER_ASSIGNMENTS, updated=WRAPPER_UPDATES )

Π­Ρ‚ΠΎ удобная функция для Π²Ρ‹Π·ΠΎΠ²Π° update_wrapper () Π² качСствС Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ. Π­Ρ‚ΠΎ эквивалСнтно partial(update_wrapper, wrapped=wrapped, assigned=assigned, updated=updated). НапримСр:

>>> from functools import wraps
>>> def my_decorator(f):
...     @wraps(f)
...     def wrapper(*args, **kwds):
...         print('Calling decorated function')
...         return f(*args, **kwds)
...     return wrapper
...
>>> @my_decorator
... def example():
...     """Docstring"""
...     print('Called example function')
...
>>> example()
Calling decorated function
Called example function
>>> example.__name__
'example'
>>> example.__doc__
'Docstring'

Π‘Π΅Π· использования этой Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ² имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π±Ρ‹Π»ΠΎ Π±Ρ‹ 'wrapper', Π° строка Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ исходного example () Π±Ρ‹Π»Π° Π±Ρ‹ потСряна.

Last updated