【发布时间】:2015-12-01 00:32:18
【问题描述】:
我正在尝试创建一个装饰器,它记录方法启动的时间、方法的名称和该方法的参数。
这个装饰器在某些情况下工作,但我想让它在尽可能多的情况下工作。所以我想让它既可以作为普通方法,也可以作为类方法。
def log(func):
@wraps(func)
def wrapper(*args, **kwargs):
log(func.__name__ + '; ARGS: {}'.format(','.join(str(args))))
return func(*args, **kwargs)
return wrapper
有一些问题:
它不适用于类方法。为了让它在课堂上工作,我必须将
self作为第一个参数放在def wrapper(*args, **kwargs):和这里return func(*args, **kwargs)。我想让它适用于所有类型的参数(列表、字符串、整数、字典等)。这仅适用于字符串和整数(分别适用于浮点数等)
奇怪的是,例如,如果我在一个将两个整数作为参数的方法上使用它,它会将其打印到日志中:
name_of_function; ARGS: (,5,,, ,6,)
如果您能帮我解决这些问题,我将不胜感激。
【问题讨论】:
标签: python string types int decorator