【发布时间】:2020-10-14 21:55:28
【问题描述】:
我需要创建一个算法,它作为在运行时选择的一系列函数执行,有点像策略模式。我想避免创建许多单一方法类(100+),而是使用简单的函数,并使用装饰器组装它们。
actions = []
def act(specific_fn):
actions.append(specific_fn)
return specific_fn
@act
def specific_fn1():
print("specific_fn1")
@act
def specific_fn2():
print("specific_fn2")
def execute_strategy():
[f() for f in actions]
我有几个问题:
- 如何修改装饰器函数
act以将列表actions作为参数,以便将装饰函数添加到列表中? - 如何使用在另一个文件中定义的
specific_fnX?目前,我只是在调用函数中导入文件——但这似乎很奇怪。还有其他选择吗?
另外,关于实现这个模式还有其他想法吗?
【问题讨论】:
标签: python python-3.x python-decorators strategy-pattern