일반 클래스를 사용하여 열거형을 직접 구현합니다.
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 'color'> print(color.YELLOW.value) # 1 print(type(color.YELLOW.value)) # <class 'int'> 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 'color'> 注意事项如下:
1. 열거형 클래스는 객체를 인스턴스화하는 데 사용할 수 없습니다
2. 열거형 클래스의 항목에 액세스하려면 액세스할 클래스 이름과 색상과 같은 액세스할 항목을 사용하면 됩니다. .YELLOW
3. 열거형 클래스 내부에 정의된 Key = 값은 클래스 외부에서 수정할 수 없습니다. 이는 다음 접근 방식이 잘못되었음을 의미합니다.
color.YELLOW = 2 # Wrong, can't reassign member
4 열거형 항목은 == 또는 is
를 사용하여 비교에 사용할 수 있습니다. 5. 열거 클래스의 키와 값인 Enum을 가져온 후 키는 동일할 수 없으며 값은 동일할 수 있지만 동일한 값을 가진 키는 별칭으로 사용됩니다
6. 열거형 클래스는 정수만 가능하며, IntEnum을 가져온 다음 IntEnum을 상속할 수 있습니다. 이때 값이 문자열 숫자이면 오류가 보고되지 않습니다.
from enum import IntEnum
7. 클래스는 같을 수 없습니다. 그러면 Enum을 가져올 때 동시에 고유한 기능을 가져와야 합니다
from enum import Enum, unique
위 내용은 Python에서 열거형을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!