Вы можете использовать обычный способ Python, чтобы избежать использования оператора switch
, используемого на других языках: словарь.Функции являются объектными, поэтому функция может быть значением в словаре.
function_dict = {'X': foo.X, 'Y': foo:Y, 'Z': foo.Z}
return function_dict[val](self)
Если val
не является одним из ключей в словаре, возникнет ошибка.Если вы не хотите эту конкретную ошибку, есть несколько способов вызвать еще одну ошибку или вообще избежать ошибок.Например, вы можете использовать метод словарей get
, чтобы использовать значение по умолчанию, если ключ отсутствует в словаре.Например, если вы хотите, чтобы метод foo.other
вызывался для любого ключа, кроме X, Y, Z
, вы можете использовать
function_dict = {'X': foo.X, 'Y': foo:Y, 'Z': foo.Z}
return function_dict.get(val, other)(self)
. Перед использованием словаря вы также можете проверить, является ли val
одним изклавиши, как в
function_dict = {'X': foo.X, 'Y': foo:Y, 'Z': foo.Z}
if val not in function_dict:
sys.exit("ERROR: value %s DNE"%(val))
return function_dict[val](self)