首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pylons装饰器的工作原理

pylons装饰器的工作原理
EN

Stack Overflow用户
提问于 2009-11-27 17:50:53
回答 1查看 623关注 0票数 1
代码语言:javascript
复制
from decorator import decorator
from pylons.decorators.util import get_pylons

def allowed_roles(roles):
    def wrapper(func, *args, **kwargs):
        session = get_pylons(args).session
        # edit pylons session here.
        return func(*args, **kwargs)
    return decorator(wrapper)

有人能解释一下它是如何工作的吗?

EN

回答 1

Stack Overflow用户

发布于 2009-11-27 20:09:31

就像其他装饰师的作品一样-

装饰器是一个函数,它接收一个函数作为参数,并返回另一个函数。返回的函数将“取代”原始函数。

由于装饰器的预期效果通常是能够在原始函数(被装饰的函数)运行之前和之后运行一些代码,因此装饰器创建一个新函数,该函数接受任意数量的匿名和命名参数(前缀"args“和前缀"kwargs”分别负责将参数存储在列表和字典中)。

在这个新函数中,您可以编写验证码-然后它调用原始函数-在此上下文中称为"func",并返回其原始值。

"decorator.decorator“调用并不是严格需要的:它只是修改了包装器函数的一些ttrbitue,以便它看起来更接近原始函数(如'func_name‘属性)-但代码应该在没有它的情况下工作。

定义装饰器后,必须将其应用于要装饰器的函数或方法:只需在要装饰器的函数定义的前缀行中放置@allowed_roles即可。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1807760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档