如何让这个@depreated装饰器能够打印出来?

实际现象

  • python main.py stdout没有打印相关的警告描述

问题

  1. 如何提示我的调用者(客户端), 某某函数已经废弃了呢( 不通过文档 ) ( 总要在某个时刻警告之 )

    1. 在stdout打印, 但是这个方法使用范围不是很大

相关代码

  • 我的装饰器
def deprecated(reason):
    def _decorator(func):
        @functools.wraps(func)
        def __wrapper(*args, **kwargs):
            warn_str = '%s is now deprecated! reason: %s' % (func.__name__, reason)
            warnings.warn(warn_str, category=DeprecationWarning,
                          stacklevel=2)

            return func(*args, **kwargs)

        return __wrapper

    return _decorator


@deprecated('this functions is deprecated, please use mod1.func2')
def func1(a, b):
    return a + b


def func2(x, y):
    return func1(x, y)


def main():
    print(func2(1, 1))


if __name__ == '__main__':
    main()

上下文环境

  • python2.7
阅读 2.1k
1 个回答
if __name__ == '__main__':
    with warnings.catch_warnings(record=True) as w:
        # Cause all warnings to always be triggered.
        warnings.simplefilter("always")
        main()
        print w[-1].message
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题