在一般情况下,您不能这样做,因为
@with_connection
def spam(connection):
# Do something
相当于
def spam(connection):
# Do something
spam = with_connection(spam)
这意味着“原始”垃圾邮件甚至可能不再存在。一个(不太漂亮的)hack是这样的:
def with_connection(f):
def decorated(*args, **kwargs):
f(get_connection(...), *args, **kwargs)
decorated._original = f
return decorated
@with_connection
def spam(connection):
# Do something
spam._original(testcon) # calls the undecorated function