【发布时间】:2023-01-20 01:35:50
【问题描述】:
我正在尝试为这个基本问题找到一个优雅的解决方案。我正在使用 webhook,我接收 json 形式的数据。
我必须根据其中一个值来处理数据。
import json
data = json.loads(raw_json)
data = {
'type': 'A', # Type can be A, B or C
'SomeAttribute' : 'SomeValue',
'SomeOtherAttribute' : 'SomeOtherValue',
}
基于类型,我必须处理整个字典并根据类型执行一些操作。当然,我可以简单地定义一些函数并生成无限的 if 堆栈,但这看起来并不优雅。
if data['type'] == 'A':
handle_type_A(data)
elif data['type'] == 'B':
handle_type_B(data)
elif data['type'] == 'C':
handle_type_C(data)
elif data['type'] == 'D':
handle_type_D(data)
elif data['type'] == 'E':
handle_type_E(data)
策略模式似乎是这样?我是初学者。
【问题讨论】:
-
使用字典:
handle = {'A': handle_type_A, 'B': handle_type_B, ...}。然后你可以做handle[data['type']](data)
标签: python python-3.x design-patterns