Python中枚舉的用法


枚舉的結構

from enum import Enum
class Color(Enum):
    RED = 1
    YELLOW = 2
    BLUE = 3

print(Color.RED)
# Color.RED
  • 從enum導入Enum,並讓自定義的枚舉類繼承Enum
  • 枚舉類內的標簽最好用大寫字母來表示常量

 

枚舉類與普通類的區別

  • 標簽值不可被修改
  • 一個標簽只能對應一個值,但多個標簽可以對應相同的值(別名)

  以下兩種情況都會報錯:

from enum import Enum
class Color(Enum):
    RED = 1
    YELLOW = 2
    BLUE = 3

Color.RED = 2
from enum import Enum
class Color(Enum):
    RED = 1
    RED = 2
    YELLOW = 2
    BLUE = 3

 

枚舉類型、枚舉名稱、枚舉值之間的區別

from enum import Enum
class Color(Enum):
    RED = 1
    YELLOW = 2
    BLUE = 3

print(Color.RED)
print(type(Color.RED))
# Color.RED
# <enum 'Color'>
print(Color.RED.name)       # 獲取枚舉類型的名稱
print(type(Color.RED.name))
# RED
# <class 'str'>
print(Color.RED.value)      # 獲取枚舉類型的真實值
print(type(Color.RED.value))
# 1
# <class 'int'>

 

  枚舉類型可以用讀取字典的方式來讀取,並且可以遍歷:

from enum import Enum
class Color(Enum):
    RED = 1
    YELLOW = 1
    BLUE = 3

print(Color['RED']) # 訪問
for e in Color:     # 遍歷
    print(e)


# 當多個標簽對應相同值時,第一個定義的為主名,其他的為別名
# 直接遍歷無法輸出別名,可以用__members__來全部輸出
for e in Color.__members__:
    print(e)

 

枚舉類型間的比較

  枚舉類型可以做等值比較和身份比較,但是不能做大小比較:

from enum import Enum
class Color(Enum):
    RED = 1
    YELLOW = 1
    BLUE = 3

print(Color.RED == Color.YELLOW)
# True
print(Color.RED is Color.YELLOW)
# True

 

將數字轉換為枚舉類型

from enum import Enum
class Color(Enum):
    RED = 1
    YELLOW = 1
    BLUE = 3

e = Color(1) # 根據數字來找到對應的枚舉類型
print(e)
# Color.RED

 

其他

  規定枚舉類型對應值只能是數字:

from enum import IntEnum  # 使用IntEnum
class Color(IntEnum):
    RED = 1
    YELLOW = 2
    BLUE = 3

  

  規定不可取別名(每個標簽必須對應不同值):

from enum import Enum,unique  # 使用unique裝飾器
@ unique
class Color(Enum):
    RED = 1
    YELLOW = 2
    BLUE = 3

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM