python 自定義裝飾器
阿新 • • 發佈:2020-10-04
- 提醒使用者使用了廢棄的函式
def deprecated(func): """This decorator is used to mark functions as deprecated. It will result in a warning being emitted when the function is used. """ @functools.wraps(func) def new_func(*args, **kwargs): warnings.simplefilter('always', DeprecationWarning) # turn off filter warnings.warn( "Call to deprecated function {}.".format(func.__name__), category=DeprecationWarning, stacklevel=2 ) warnings.simplefilter('default', DeprecationWarning) # reset filter return func(*args, **kwargs) return new_func
- 裝飾類中函式的裝飾器,給函式增加報錯功能
# 裝飾類中函式的裝飾器第一個引數是self def connection_closed_handler(function): """Handle ConnectionClosedException.""" @wraps(function) def _wrap(inst, *args, **kwargs): try: return function(inst, *args, **kwargs) except (ConnectionClosedException, WebSocketConnectionClosedException): inst.logger.warn("the connection lost. Resetting ...") inst.reset(args[1]) return function(inst, *args, **kwargs) return _wrap