我应该把装饰员放在哪里?

时间:2017-10-02 08:04:38

标签: python python-3.x python-decorators

我试图在没有运气的情况下寻找类似的问题。我是python的新手,所以,请好,:)。

我有我的班级,但我想在执行函数时记录并使用哪些参数,所以我写了装饰器。

目前,我将所有内容都放在一个脚本中,看起来或多或少像:

import...

decorators...

my class...

真诚地我不喜欢我的类外面挂着的装饰器,我有一个初始化日志级别的函数和一个从未用作装饰器的函数,但它被其他装饰器使用。 [问题末尾的代码]

我应该将装饰器放在decorator.py文件中并将其导入我的类脚本中吗?我应该这样离开他们并学会喜欢这种文件结构吗?

def initialize_log(db):
    logzero.loglevel(logging.INFO)
    logzero.logfile("sw-" + db + ".log")


def _log(log_function, f, *args, **kwargs):
    arguments = ""
    if len(args) > 1:
        arguments = " ({})".format(','.join(map(str, args[1:])))

    kwarguments = ""
    if len(kwargs) > 0:
        kwarguments = " ({})".format(','.join([str(k) + "=" + str(kwargs[k]) for k in kwargs]))

    log_function(f.__name__ + " started" + arguments + kwarguments)
    res = f(*args, **kwargs)
    log_function(f.__name__ + " completed" + arguments + kwarguments)
    return res


def log_info(f):
    def _decorator(*args, **kwargs):
        return _log(logger.info, f, *args, **kwargs)

    return _decorator


def log_debug(f):
    def _decorator(*args, **kwargs):
        return _log(logger.debug, f, *args, **kwargs)

    return _decorator

0 个答案:

没有答案