enum을 사용하여 특정 하위 메서드를 선택하고 실행하는 Pythonic 방법?

PyRsquared

최종 사용자가 호출 할 함수가 있으며이 함수는 1에서 3까지의 int 인수를받습니다. int에 따라 함수가 별도의 하위 메서드를 실행하기를 원합니다. 나는 일반적으로 아래와 같이 if 문으로 이것을 할 것이지만을 사용하여 이것을 수행하는 더 깨끗하고 비단뱀적인 방법을 찾고 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이 작업을 수행하는 방법에 대해 사용 하는 방법 에 대해 혼란 스럽습니다 . 또는 이것이 최선의 방법인지 여부는 무엇입니까?

에단 퍼만

현재이 작업을 수행하는 가장 깨끗한 방법은 aenum라이브러리 1 을 사용하는 것입니다 .

from aenum import Enum

class UserMethod(Enum):
    #
    _init_ = 'value method'
    #
    def __call__(self, *args, **kwds):
        return self.method(*args, **kwds)
    #
    def first(blah):
        return blah
    #
    def second(spam=2):
        return spam
    #
    def third(this, that):
        return this, that
    #
    FIRST_METHOD = 1, first
    SECOND_METHOD = 2, second
    THIRD_METHOD = 3, third

각 메서드는 열거 형 멤버 자체에 저장되며 멤버를 호출하면 해당 함수에 대한 호출이 전달됩니다.

--> list(UserMethod)
[<UserMethod.FIRST_METHOD: 1>, <UserMethod.SECOND_METHOD: 2>, 
<UserMethod.THIRD_METHOD: 3>]

--> UserMethod.THIRD_METHOD("hello", "world")
('hello', 'world')

# This function is now much cleaner
def user_function(user_arg: int) -> float:
    return UserMethod(user_arg).method

1 공개 : 저는 Python stdlibEnum , enum34backportAdvanced Enumeration ( aenum) 라이브러리 의 작성자입니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

특정 목록 요소를 선택하고 Python을 사용하여 CSV 행에 추가하는 방법

분류에서Dev

CSS 선택기를 사용하여 특정 CSS의 첫 번째 하위 유형을 선택하는 방법

분류에서Dev

특정 열 머리글을 선택하고 명령을 사용하여보기를 만드는 방법

분류에서Dev

Typescript를 사용하여 특정 키를 선택하고 이름을 바꾸는 방법은 무엇입니까?

분류에서Dev

내 XML에서 텍스트의 특정 하위 문자열을 찾고 XSLT를 사용하여이 텍스트를 선택하는 방법

분류에서Dev

클립 보드에서 특정 행을 선택하는 방법

분류에서Dev

BeautifulSoup을 사용하여 테이블에서 특정 행을 선택하는 방법은 무엇입니까?

분류에서Dev

XPATH를 사용하여 특정 문자열을 포함하는 모든 노드를 선택하는 방법

분류에서Dev

if 문을 실행하여 file.cFileName을 사용하여 특정 파일 또는 폴더를 찾는 방법

분류에서Dev

특정 명령을 실행하기 위해 단어를 지정하는 방법

분류에서Dev

g ++ 코드를 실행하고 execl을 사용하여 실행하는 방법

분류에서Dev

timertask를 사용하여 특정 시간에 코드를 실행하는 방법

분류에서Dev

jQuery를 사용하여 HTML 선택 요소의 특정 값을 얻는 방법

분류에서Dev

특정 jsonfromat을 사용하여 JsonObject를 빌드하는 방법

분류에서Dev

jquery에서 메서드 실행을 위해 Delay를 사용하는 방법

분류에서Dev

Win32 :: OLE을 사용하여 특정 통합 문서에서 매크로를 실행하는 방법

분류에서Dev

특정 범위 사이에서 사용자 입력을 확인하는 메서드를 만드는 방법

분류에서Dev

with ()를 사용하여 여러 테이블에서 특정 열을 선택하고 ()를 선택하십시오.

분류에서Dev

sed를 사용하여 특정 열을 수정하는 방법

분류에서Dev

특정 범위를 선택하는 방법 (redshift regex 사용)

분류에서Dev

정규 표현식을 사용하여 텍스트에서 특정 숫자를 선택하는 방법

분류에서Dev

Python GET 요청을 사용하여 특정 JSON 값을 선택하고 인쇄하는 방법

분류에서Dev

실행 명령을 기반으로 sed 또는 awk를 사용하여 특정 행을 바꾸는 방법

분류에서Dev

X 인 경우 특정 행을 선택하고 Y 인 경우 여러 행을 선택하는 방법

분류에서Dev

Microsoft SQL Server 2008에서 특정 행을 선택하는 방법

분류에서Dev

Ansible을 사용하여 특정 호스트에서 작업을 실행하는 올바른 방법

분류에서Dev

C에서 makefile을 사용하여 특정 부분을 실행하는 방법 (LINUX)

분류에서Dev

메서드에서 특정 결과를 얻을 때 남은 작업 실행을 중지하는 방법

분류에서Dev

MySQL : 테이블의 특정 행을 선택하고 SUBSTRING_INDEX를 수행하는 방법

Related 관련 기사

  1. 1

    특정 목록 요소를 선택하고 Python을 사용하여 CSV 행에 추가하는 방법

  2. 2

    CSS 선택기를 사용하여 특정 CSS의 첫 번째 하위 유형을 선택하는 방법

  3. 3

    특정 열 머리글을 선택하고 명령을 사용하여보기를 만드는 방법

  4. 4

    Typescript를 사용하여 특정 키를 선택하고 이름을 바꾸는 방법은 무엇입니까?

  5. 5

    내 XML에서 텍스트의 특정 하위 문자열을 찾고 XSLT를 사용하여이 텍스트를 선택하는 방법

  6. 6

    클립 보드에서 특정 행을 선택하는 방법

  7. 7

    BeautifulSoup을 사용하여 테이블에서 특정 행을 선택하는 방법은 무엇입니까?

  8. 8

    XPATH를 사용하여 특정 문자열을 포함하는 모든 노드를 선택하는 방법

  9. 9

    if 문을 실행하여 file.cFileName을 사용하여 특정 파일 또는 폴더를 찾는 방법

  10. 10

    특정 명령을 실행하기 위해 단어를 지정하는 방법

  11. 11

    g ++ 코드를 실행하고 execl을 사용하여 실행하는 방법

  12. 12

    timertask를 사용하여 특정 시간에 코드를 실행하는 방법

  13. 13

    jQuery를 사용하여 HTML 선택 요소의 특정 값을 얻는 방법

  14. 14

    특정 jsonfromat을 사용하여 JsonObject를 빌드하는 방법

  15. 15

    jquery에서 메서드 실행을 위해 Delay를 사용하는 방법

  16. 16

    Win32 :: OLE을 사용하여 특정 통합 문서에서 매크로를 실행하는 방법

  17. 17

    특정 범위 사이에서 사용자 입력을 확인하는 메서드를 만드는 방법

  18. 18

    with ()를 사용하여 여러 테이블에서 특정 열을 선택하고 ()를 선택하십시오.

  19. 19

    sed를 사용하여 특정 열을 수정하는 방법

  20. 20

    특정 범위를 선택하는 방법 (redshift regex 사용)

  21. 21

    정규 표현식을 사용하여 텍스트에서 특정 숫자를 선택하는 방법

  22. 22

    Python GET 요청을 사용하여 특정 JSON 값을 선택하고 인쇄하는 방법

  23. 23

    실행 명령을 기반으로 sed 또는 awk를 사용하여 특정 행을 바꾸는 방법

  24. 24

    X 인 경우 특정 행을 선택하고 Y 인 경우 여러 행을 선택하는 방법

  25. 25

    Microsoft SQL Server 2008에서 특정 행을 선택하는 방법

  26. 26

    Ansible을 사용하여 특정 호스트에서 작업을 실행하는 올바른 방법

  27. 27

    C에서 makefile을 사용하여 특정 부분을 실행하는 방법 (LINUX)

  28. 28

    메서드에서 특정 결과를 얻을 때 남은 작업 실행을 중지하는 방법

  29. 29

    MySQL : 테이블의 특정 행을 선택하고 SUBSTRING_INDEX를 수행하는 방법

뜨겁다태그

보관