snippets.txt 944 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. class decorator_class(object):
  2. def __init__(self, original_function):
  3. self.original_function = original_function
  4. def __call__(self, *args, **kwargs):
  5. print('call method before {}'.format(self.original_function.__name__))
  6. self.original_function(*args, **kwargs)
  7. # Practical Examples
  8. def my_logger(orig_func):
  9. import logging
  10. logging.basicConfig(filename='{}.log'.format(orig_func.__name__), level=logging.INFO)
  11. def wrapper(*args, **kwargs):
  12. logging.info(
  13. 'Ran with args: {}, and kwargs: {}'.format(args, kwargs))
  14. return orig_func(*args, **kwargs)
  15. return wrapper
  16. def my_timer(orig_func):
  17. import time
  18. def wrapper(*args, **kwargs):
  19. t1 = time.time()
  20. result = orig_func(*args, **kwargs)
  21. t2 = time.time() - t1
  22. print('{} ran in: {} sec'.format(orig_func.__name__, t2))
  23. return result
  24. return wrapper
  25. import time