Python 方法的日志装饰器
我正在尝试创建一个decorator,它记录方法启动的时间、方法的名称和该方法的参数 这个装饰器在某些情况下工作,但我想让它在尽可能多的情况下工作。所以我想让它既作为普通方法也作为类方法工作Python 方法的日志装饰器,python,string,types,int,decorator,Python,String,Types,Int,Decorator,我正在尝试创建一个decorator,它记录方法启动的时间、方法的名称和该方法的参数 这个装饰器在某些情况下工作,但我想让它在尽可能多的情况下工作。所以我想让它既作为普通方法也作为类方法工作 def log(func): @wraps(func) def wrapper(*args, **kwargs): log(func.__name__ + '; ARGS: {}'.format(','.join(str(args)))) re
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\u of_function;参数:(,5,,,6,)
def func_detail(func):
def func_wrapper(*args,**kwargs):
print(func.__name__)
print(*args)
print(kwargs)
return func(*args,**kwargs)
return func_wrapper
@func_detail
def foo(a,b,c,**kwargs):
return 1
class Person(object):
@func_detail
def __init__(self,name,age,**kwargs):
self.name = name
self.age = age
self.email = kwargs.get('email',None)
me = Person('taesu',24,email='me@me.com')
print(foo(1,1.1,'4',test='me'))
是的,这很有帮助。非常感谢。以上内容在py3上工作。您可能需要对其进行一些调整