你可以用一系列的方法很容易地做到这一点。有一些关于switch语句语法的建议,但是关于是否以及如何进行范围测试还没有一致意见。看到if... elif... elif... else
PEP 275获取完整的细节和当前状态。
对于需要从大量可能性中进行选择的情况,您可以创建一个字典映射案例值给要调用的函数。例如:
def function_1(...): ...functions = {'a': function_1, 'b': function_2, 'c': self.method_1, ...}func = functions[value]func()
为了在对象上调用方法,您可以通过使用getattr()
内置的特定名称检索方法来进一步简化 :
def visit_a(self, ...): ......def dispatch(self, value): method_name = 'visit_' + str(value) method = getattr(self, method_name) method()
建议您为方法名称使用前缀,例如visit_
在本例中。没有这样的前缀,如果值来自不受信任的源,攻击者就可以调用对象上的任何方法