您可以使用字典。字典存储引用,这意味着函数完全可以使用,如下所示:
operationFuncs = { Operation.START: strategy_objects.StartObject Operation.STOP: strategy_objects.StopObject Operation.STATUS: strategy_objects.StatusObject (...) }最好有一个默认操作以防万一,因此在运行它时,请使用a
try except并处理异常(即,与
else子句等效的对象)
try: strategy = operationFuncs[operation]()except KeyError: strategy = strategy_objects.DefaultObject()
或者,使用字典的
get方法,如果找不到您提供的键,则该方法允许您指定默认值。
strategy = operationFuncs.get(operation(), DefaultObject())
请注意,将它们存储在字典中时不包括括号,而在调用字典时才使用它们。同样,这要求它必须是
Operation.START可散列的,但情况确实如此,因为您将其描述为类似于ENUM的类。



