栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

装饰器设置功能的属性

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

装饰器设置功能的属性

您正在检查内部(包装)函数上的属性,但在原始(包装)函数上进行了设置。但是,您 根本 需要包装函数:

def permission(permission_required):    def decorator(func):        func.permission_required = permission_required        return func    return decorator

你的装饰需要返回 的东西 那将取代原有的功能。原始函数本身(添加了属性)可以很好地完成此任务,因为您要做的只是向其添加一个属性。

如果仍然需要包装器,则在 包装器函数 上设置属性:

from functools import wrapsdef permission(permission_required):    def decorator(func):        @wraps(func)        def wrapper(*args, **kwargs): # only use a wrapper if you need extra pre to be run here return func(*args, **kwargs)        wrapper.permission_required = permission_required        return wrapper    return decorator

毕竟,您要用装饰器返回的包装器替换包装的函数,因此这就是您要在其上查找属性的对象。

我还将

@functools.wraps()
装饰器添加到包装器中,该装饰器将重要的标识信息和其他有用的东西复制
func
到包装器中,从而使使用起来更加容易。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/640401.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号