>  기사  >  백엔드 개발  >  Python에서 열거형을 구현하는 방법

Python에서 열거형을 구현하는 방법

WBOY
WBOY앞으로
2023-05-11 16:28:141221검색

일반 클래스를 사용하여 열거형을 직접 구현합니다.

Python에서 열거형은 객체에 정의한 클래스 변수와 동일합니다. 각 클래스 변수는 열거형 항목에 액세스하는 방법은 다음과 같습니다. class 클래스 변수를 추가합니다.

class color():
    YELLOW  = 1
    RED     = 2
    GREEN   = 3
    PINK    = 4
 
# 访问枚举项
print(color.YELLOW) # 1

이 방법으로 문제를 해결할 수는 있지만 엄격하지도 않고 안전하지도 않습니다. 예:

1. 열거형 클래스에는 동일한 키 항목이 있어서는 안 됩니다. (클래스 변수)

2. 열거 항목의 값은 클래스 외부에서 직접 수정할 수 없습니다.

class color():
    YELLOW  = 1
    YELLOW  = 3   # 注意这里又将YELLOW赋值为3,会覆盖前面的1
    RED     = 2
    GREEN   = 3
    PINK    = 4
 
# 访问枚举项
print(color.YELLOW) # 3
 
# 但是可以在外部修改定义的枚举项的值,这是不应该发生的
color.YELLOW = 99
print(color.YELLOW) # 99

해결 방법: enum 모듈을 사용하세요.

enum 모듈은 시스템에 내장된 모듈이며 import를 사용하여 직접 가져올 수 있지만 가져올 때 enum 모듈의 모든 데이터를 가져오기 위해 import enum을 사용하는 것은 권장되지 않습니다. 일반적으로 가장 일반적으로 사용되는 항목은 enum 모듈에서 Enum, IntEnum 및 고유입니다

# 导入枚举类
from enum import Enum
 
# 继承枚举类
class color(Enum):
    YELLOW  = 1
    BEOWN   = 1 
    # 注意BROWN的值和YELLOW的值相同,这是允许的,此时的BROWN相当于YELLOW的别名
    RED     = 2
    GREEN   = 3
    PINK    = 4
 
class color2(Enum):
    YELLOW  = 1
    RED     = 2
    GREEN   = 3
    PINK    = 4

사용 자신이 정의한 열거형 클래스:

print(color.YELLOW) # color.YELLOW
print(type(color.YELLOW)) # <enum &#39;color&#39;>
 
print(color.YELLOW.value)  # 1
print(type(color.YELLOW.value)) # <class &#39;int&#39;>
 
print(color.YELLOW == 1)    # False
print(color.YELLOW.value == 1)  # True
print(color.YELLOW == color.YELLOW)  # True
print(color.YELLOW == color2.YELLOW)  # False
print(color.YELLOW is color2.YELLOW)  # False
print(color.YELLOW is color.YELLOW)  # True
 
print(color(1))         # color.YELLOW
print(type(color(1)))   # <enum &#39;color&#39;>
  注意事项如下:

1. 열거형 클래스는 객체를 인스턴스화하는 데 사용할 수 없습니다

2. 열거형 클래스의 항목에 액세스하려면 액세스할 클래스 이름과 색상과 같은 액세스할 항목을 사용하면 됩니다. .YELLOW

3. 열거형 클래스 내부에 정의된 Key = 값은 클래스 외부에서 수정할 수 없습니다. 이는 다음 접근 방식이 잘못되었음을 의미합니다.

color.YELLOW = 2  # Wrong, can&#39;t reassign member

4 열거형 항목은 == 또는 is 

를 사용하여 비교에 사용할 수 있습니다. 5. 열거 클래스의 키와 값인 Enum을 가져온 후 키는 동일할 수 없으며 값은 동일할 수 있지만 동일한 값을 가진 키는 별칭으로 사용됩니다

6. 열거형 클래스는 정수만 가능하며, IntEnum을 가져온 다음 IntEnum을 상속할 수 있습니다. 이때 값이 문자열 숫자이면 오류가 보고되지 않습니다.

from enum import IntEnum

7. 클래스는 같을 수 없습니다. 그러면 Enum을 가져올 때 동시에 고유한 기능을 가져와야 합니다

from enum import Enum, unique

위 내용은 Python에서 열거형을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제