首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >丢弃装饰器

丢弃装饰器
EN

Stack Overflow用户
提问于 2017-06-06 14:43:43
回答 1查看 24关注 0票数 1

你能告诉我一个函数是否可以同时使用装饰器和不带装饰器呢?

示例:

代码语言:javascript
复制
def makeitalic(fn):
    def wrapped():
        return "<i>" + fn() + "</i>"
    return wrapped

@makeitalic
def hello():
    return "hello, sir or madam!"

我唯一想到的就是:

代码语言:javascript
复制
def hello():
    return "hello, sir or madam!"

@makeitalic
def italic_hello():
    return(hello())

那么,是否可以在没有装饰器的情况下使用hello()呢?

EN

回答 1

Stack Overflow用户

发布于 2017-06-06 14:46:38

一般不是这样的。修饰函数替换了原始函数,因此除非修饰器本身显式地使其可用(例如,通过将其存储在某个全局注册表中或作为某个对象上的属性),否则无法获取原始函数。(您可以在修饰函数的闭包对象中将其作为单元格变量进行访问,但这不是很健壮,除了测试和实验之外,不应该依赖它。)

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

https://stackoverflow.com/questions/44383049

复制
相关文章

相似问题

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