【发布时间】:2011-06-24 13:06:06
【问题描述】:
假设我有一个装饰器和一个这样的包装函数:
def squared(method):
def wrapper(x, y):
return method(x*x, y*y)
return wrapper
@squared
def sum(x, y):
return x+y
我有其他代码想要调用sum 函数的未修饰版本。是否有一个导入技巧可以让我使用这种展开的方法?如果我的代码显示from some.module.path import sum,那么我会得到sum 方法的包装版本,这不是我在这种情况下想要的。 (是的,我知道我可以把它分解成一个辅助方法,但这会破坏我在这里要使用的模式的一些清洁度。)
我可以向装饰器添加额外的“魔法”以提供一些替代符号名称(如orig_sum),然后我可以导入,我只是不知道该怎么做。
【问题讨论】: