Python 在 3.4 及更高版本中提供了原生 Enum 類型。對於早期版本,您可以使用 enum34 或 aenum 等第三方程式庫。
使用enum34 或stdlib Enum:
from enum import Enum Animal = Enum('Animal', 'ant bee cat dog') Animal.ant # <Animal.ant: 1> Animal['ant'] # <Animal.ant: 1> (string lookup) Animal.ant.name # 'ant' (inverse lookup)
使用aenum:
from aenum import Enum Animal = Enum('Animal', 'ant bee cat dog') Animal.ant # same as enum34 Animal['ant'] # same as enum34 Animal.ant.name # same as enum34
使用早期🎜>使用早期🎜>
對於早期的 Python 版本,您可以使用以下自訂函數:def enum(**enums): return type('Enum', (), enums) Numbers = enum(ONE=1, TWO=2, THREE='three') Numbers.ONE # 1 Numbers.TWO # 2 Numbers.THREE # 'three'
自動列舉:
您也可以使用下列函數進行自動列舉:def enum(*sequential, **named): enums = dict(zip(sequential, range(len(sequential))), **named) return type('Enum', (), enums) Numbers = enum('ZERO', 'ONE', 'TWO') Numbers.ZERO # 0 Numbers.ONE # 1
反向映射:
支援轉換枚舉值返回名稱:def enum(*sequential, **named): enums = dict(zip(sequential, range(len(sequential))), **named) reverse = dict((value, key) for key, value in enums.iteritems()) enums['reverse_mapping'] = reverse return type('Enum', (), enums) Numbers = enum('ZERO', 'ONE', 'TWO') Numbers.reverse_mapping['1'] # 'ONE'
Typing.Literal (MyPy):
在 MyPy 中,您可以使用 Literal 定義枚舉:from typing import Literal Animal = Literal['ant', 'bee', 'cat', 'dog'] def hello_animal(animal: Animal): print(f"hello {animal}")
以上是如何在 Python 中有效地使用和表示枚舉?的詳細內容。更多資訊請關注PHP中文網其他相關文章!