本文介绍了获取装饰功能的名称?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的装饰器:
def check_domain(func):
def wrapper(domain_id ,* args,** kwargs):
domain = get_object_or_None(Domain,id = domain_id)
如果不是域:
返回无
返回func(domain_id,* args,* * kwargs)
返回包装
这是一个包装功能: / p>
@check_domain
def collect_data(domain_id,from_date,to_date):
do_stuff(...)
如果我做 collect_data。 __name __
我得到包装器
而不是 collect_data
任何想法?
解决方案
您可能想要使用functools包裹。 / p>
这是一个很好的例子,似乎适合你:)
here is my decorator:
def check_domain(func):
def wrapper(domain_id, *args, **kwargs):
domain = get_object_or_None(Domain, id=domain_id)
if not domain:
return None
return func(domain_id, *args, **kwargs)
return wrapper
Here is a wrapped up function:
@check_domain
def collect_data(domain_id, from_date, to_date):
do_stuff(...)
If I do collect_data.__name__
I get wrapper
instead of collect_data
Any ideas?
解决方案
You may want to use wraps from functools.
Here's a clear example that seems to fit for you :)
http://docs.python.org/library/functools.html#functools.wraps
这篇关于获取装饰功能的名称?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!