python 2.7 enum 예제

그러나 여전히 표준 열거형 열거형과 비교할 수 없습니다: 열거형 멤버가 있고 이름이나 값이 필요한 경우: int의 하위 클래스인 열거된 상수를 만들기 위한 기본 클래스입니다. 그렇다면 왜 열거형은 사용해야 할까요? 웹 사이트의 사용자의 성별 유형을 남성, 여성 및 해당 사용자를 남성으로 제한할 수 있는 시나리오를 상상해 보십시오. 물론 문자열 목록은 user.gender = `MALE` 또는 user.gender = `FEMALE`과 같이 잘 할 것입니다. 그러나 문자열을 성별 특성에 대한 값으로 사용하는 것은 프로그래머 오류 및 악의적인 공격에 강력하지 않습니다. 프로그래머는 `MALE`를 `ALE` 또는 `FEMALE`을 `EMAIL`으로 쉽게 오인할 수 있으며 코드는 여전히 실행되어 재미있지만 끔찍한 결과를 생성합니다. 공격자는 시스템에 신중하게 구성된 가비지 문자열 값을 제공하여 충돌을 일으키거나 루트 액세스 권한을 얻으려고 할 수 있습니다. 열거형에서 user.gender 특성을 제한된 값 목록으로 제한하는 경우 앞서 언급한 문제는 발생하지 않습니다. 열거형 멤버에는 이름과 값이 있습니다(Color.RED의 이름은 빨간색, Color.BLUE값은 3 등) 이는 Anum을 하위 클래스링하여 다른 동작을 추가하거나 변경하고 별칭을 허용하지 않는 유용한 예입니다. 원하는 변경 만 별칭을 허용하지 않는 경우 고유() 데코레이터를 대신 사용할 수 있습니다. %스타일 서식: %s와 %r은 각각 에이num 클래스의 __str__(_str__))와 __repr__(_)를 호출합니다. 다른 코드(예: IntEnum의 %i 또는 %h)는 열거형 멤버를 혼합 입력 으로 처리합니다. 열거형의 멤버를 반복해도 별칭이 제공되지 않습니다: 새 피클 프로토콜 4도 경우에 따라 피클이 클래스를 찾을 수 있는 위치로 설정되는 __alname___에 의존합니다.

예를 들어 클래스가 전역 범위의 SomeData 클래스에서 사용할 수 있게 된 경우: 열거형, IntEnum, IntFlag 및 플래그는 대부분의 사용 사례를 포함해야 하지만 모두 다룰 수는 없습니다. 다음은 직접 사용할 수 있는 몇 가지 다른 유형의 열거형에 대한 레시피또는 직접 적인 열거형을 만드는 예제입니다. 또한 열거형은 열거형이 멤버를 정의하지 않는 경우에만 허용됩니다. 그래서 이것은 금지되어 있습니다 :이 API의 의미체계는 명명 된 것과 유사합니다. 열거형 호출의 첫 번째 인수는 열거형의 이름입니다. 참고: 열거형이 __new___() 및/또는 __init___()를 정의하는 경우 열거형 멤버에 부여된 모든 값이 해당 메서드로 전달됩니다. 예를 들어 행성을 참조하십시오. 이제 색상과 성별은 열거형처럼 작동하며 다음과 같은 방식으로 사용할 수 있습니다: 때로는 프로그래밍 방식으로 열거형 멤버에 액세스하는 것이 유용합니다(예: Color.RED가 정확한 색상을 알 수 없기 때문에 하지 않는 경우) 프로그램 작성 시간)을 참조하십시오.

열거형은 이러한 액세스를 허용합니다: __new___)는 지정된 경우 열거형 멤버를 만들고 반환해야 합니다. 또한 멤버의 _value_를 적절하게 설정하는 것이 좋습니다. 모든 멤버가 만들어지면 더 이상 사용되지 않습니다. 모듈 열거형 설치열거 모듈을 사용하려면 파이썬 3.4가 필요합니다. 파이썬 3.4에 설치하려면: 파이썬 3은 이제 표준 라이브러리에 이 라이브러리를 대체하는 열거형 구현(타사 enum34 배포판으로 이전 Python 버전에서도 사용 가능)을 가지고 있습니다. 기본값으로 1을 시작 번호가 아닌 0으로 설정되는 이유는 0이 부울 의미에서 False이지만 열거형 멤버는 모두 True로 평가하기 때문입니다. __members__ 특성은 열거형 멤버에 대한 자세한 프로그래밍 방식으로 액세스하는 데 사용할 수 있습니다. 예를 들어 모든 별칭 찾기: 특수 특성 __members__는 멤버에 대한 순서가 지정된 사전 매핑 이름입니다. 여기에는 별칭을 포함하여 열거형에 정의된 모든 이름이 포함됩니다: 열거형 값 간의 정렬된 비교는 지원되지 않습니다. 열거형 멤버는 정수(하지만 아래 IntEnum 참조): 열거형 멤버에 이름으로 액세스하려면 항목 액세스를 사용하세요: _order_ 특성을 동기화하여 Python 2 / Python 3 코드를 동기화하는 데 도움이 됩니다.

Geplaatst in Geen categorie door admin. Zet de link bij je favorieten link.