1234567891011121314151617181920212223242526272829303132333435363738394041 |
- class decorator_class(object):
- def __init__(self, original_function):
- self.original_function = original_function
- def __call__(self, *args, **kwargs):
- print('call method before {}'.format(self.original_function.__name__))
- self.original_function(*args, **kwargs)
- # Practical Examples
- def my_logger(orig_func):
- import logging
- logging.basicConfig(filename='{}.log'.format(orig_func.__name__), level=logging.INFO)
- def wrapper(*args, **kwargs):
- logging.info(
- 'Ran with args: {}, and kwargs: {}'.format(args, kwargs))
- return orig_func(*args, **kwargs)
- return wrapper
- def my_timer(orig_func):
- import time
- def wrapper(*args, **kwargs):
- t1 = time.time()
- result = orig_func(*args, **kwargs)
- t2 = time.time() - t1
- print('{} ran in: {} sec'.format(orig_func.__name__, t2))
- return result
- return wrapper
- import time
|