获取装饰功能的名称? [英] Get the name of a decorated function?

查看:127
本文介绍了获取装饰功能的名称?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的装饰器:

  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>

这是一个很好的例子,似乎适合你:)



http:/ /docs.python.org/library/functools.html#functools.wraps


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

这篇关于获取装饰功能的名称?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆