Advertisement
kipishio

decorator_with_args

Jan 29th, 2022
829
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. from typing import Callable
  2.  
  3.  
  4. def decorator_with_args_for_any_decorator(func) -> Callable:
  5.     """
  6.    Декоратор функция, принимает от декорируемого декоратора аргументы, которые передали в декорируемый декоратор.
  7.    :param func: Callable принимаемая декорируемая функция.
  8.    :return: Callable возвращаем объект декорируемой функции
  9.    """
  10.  
  11.     def wrapper(*args, **kwargs) -> Callable:
  12.         """
  13.        Декоратор функция обертка, принимает аргументы от декорируемой функции, и возвращает объекта декорируемой
  14.        функции.
  15.        :param args: *args      принимает позиционные аргументы.
  16.        :param kwargs: **kwargs принимает именованные аргументы
  17.        :return: Callable       декорируемый декоратор
  18.        """
  19.         print('Переданные арги и кварги в декоратор: {args}, {kwargs}'.format(args=args, kwargs=kwargs))
  20.         return func
  21.  
  22.     return wrapper
  23.  
  24.  
  25. @decorator_with_args_for_any_decorator
  26. def decorated_decorator(func: Callable):
  27.     """
  28.    Декоратор функция, принимает объект функции
  29.    :param func: Callable - объект декорируемая функция
  30.    :return: Callable - объект декорируемая функция
  31.    """
  32.     def wrapper(*args, **kwargs) -> Callable:
  33.         """
  34.        Декоратор функция возвращает результат работы декорируемой функции.
  35.        :param args: *args позиционные аргументы декорируемой функции.
  36.        :param kwargs: **kwargs именованные аргументы декорируемой функции.
  37.        :return:
  38.        """
  39.         result = func(*args, **kwargs)
  40.         return result
  41.  
  42.     return wrapper
  43.  
  44.  
  45. @decorated_decorator(100, 'рублей', 200, 'друзей', 4564564, test_01=34, test_02='аргумент my_str')
  46. def decorated_function(text: str, num: int) -> None:
  47.     print("Привет", text, num)
  48.  
  49.  
  50. decorated_function("Юзер", 101)
  51.  
  52.  
  53. def test(kit: str, kot: int, bot: float):
  54.     print(kit, kot, bot)
  55.  
Advertisement
Advertisement
Advertisement
RAW Paste Data Copied
Advertisement