【发布时间】:2014-03-03 01:54:13
【问题描述】:
(Python 2.7)由于装饰器不能与它们正在装饰的函数共享变量,我怎样才能将object_list 传递给装饰函数?我有一些函数将使用raw_turn_over_mailer() 装饰器,如果可能的话,我想将object_list 保留为本地装饰函数。
def raw_turn_over_mailer(function):
@wraps(function)
def wrapper(requests):
original_function = function(requests)
if object_list:
....
return original_function
return wrapper
@raw_turn_over_mailer
def one(requests):
object_list = [x for x in requests
if x.account_type.name == 'AccountType1']
@raw_turn_over_mailer
def two(requests):
object_list = [x for x in requests
if x.account_type.name == 'AccountType2']
@periodic_task(run_every=crontab(hour="*", minute="*", day_of_week="*"))
def turn_over_mailer():
HOURS = 1000
requests = Request.objects.filter(completed=False, date_due__gte=hours_ahead(0), date_due__lte=hours_ahead(HOURS))
if requests:
one(requests)
two(requests)
【问题讨论】:
-
请提供SSCCE (Short, Self Contained, Correct, Example) 代码。
标签: python python-2.7 decorator python-decorators