你能告诉我一个函数是否可以同时使用装饰器和不带装饰器呢?
示例:
def makeitalic(fn):
def wrapped():
return "<i>" + fn() + "</i>"
return wrapped
@makeitalic
def hello():
return "hello, sir or madam!"我唯一想到的就是:
def hello():
return "hello, sir or madam!"
@makeitalic
def italic_hello():
return(hello())那么,是否可以在没有装饰器的情况下使用hello()呢?
发布于 2017-06-06 14:46:38
一般不是这样的。修饰函数替换了原始函数,因此除非修饰器本身显式地使其可用(例如,通过将其存储在某个全局注册表中或作为某个对象上的属性),否则无法获取原始函数。(您可以在修饰函数的闭包对象中将其作为单元格变量进行访问,但这不是很健壮,除了测试和实验之外,不应该依赖它。)
https://stackoverflow.com/questions/44383049
复制相似问题