首页 > 解决方案 > 如何正确地向装饰器添加类型提示?

问题描述

我目前正在编写和学习装饰器(带和不带参数)。这是一个带有一个参数的装饰器示例,该参数将函数的输出重定向到日志文件。该代码有效,但我的问题如下:

  1. 处理装饰器时使用类型提示的正确方法是什么?
  2. 装饰器应该有文档字符串吗?如果是这样,在我的示例中,文档字符串是否正确/完整?

先感谢您!

def 重定向输出(日志文件):
    """
    装饰器将函数的标准输出写入输出重定向到指定的
        日志文件。
    参数:
        log_file (str):输出将被重定向到的日志文件的路径。
    """

    def redirect_output_decorator(func):

        @functools.wraps(func)
        def redirect_output_wrapper(*args, **kwargs) -> 任意:
            输出 = StringIO()

            使用重定向标准输出(输出):
                func(*args, **kwargs)

            output_lines = output.getvalue().splitlines()

            如果输出线:
                file_logger("来自 {} 的输出:".format(func.__name__), log_file)

                对于 output_lines 中的行:
                    file_logger(行,log_file,with_date=False)

        返回 redirect_output_wrapper

    返回重定向输出装饰器

标签: pythonpython-decoratorstype-hinting

解决方案


推荐阅读