У меня есть функция, которая будет вызываться конечным пользователем, и эта функция принимает аргумент int от 1 до 3 включительно. В зависимости от int, я хочу, чтобы функция запускала отдельный вспомогательный метод. Я обычно делаю это с операторами if, как показано ниже, но я ищу более чистый / более pythoni c способ сделать это, используя Enum
.
def user_function(user_arg: int) -> float:
if user_arg == 1:
return sub_method_1()
elif user_arg == 2:
return sub_method_2()
elif user_arg == 3:
return sub_mthod_3()
print(f"Error: user_arg must be in [1,2,3]. Supplied argument: {user_arg}")
В идеале функция должна выглядеть примерно так
from enum import Enum
class UserMethod(Enum):
FIRST_METHOD = 1
SECOND_METHOD = 2
THIRD_METHOD = 3
def choose_method(self):
#... use enum to choose from the 3 sub methods ...
# This function is now much cleaner
def user_function(user_arg: int) -> float:
um = UserMethod(user_arg)
return um.choose_method()
Я не понимаю, как использовать Enum
, чтобы это сделать, или это даже лучший способ?