我试图在没有运气的情况下寻找类似的问题。我是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