在 Python 3.4 及更高版本中,可以使用 Enum 类本机定义枚举。要使用它,请为 3.4 之前的 Python 版本安装 enum34 包。
from enum import Enum Animal = Enum('Animal', 'ant bee cat dog') print(Animal.ant) # Output: <Animal.ant: 1> print(Animal['ant']) # Output: <Animal.ant: 1> print(Animal.ant.name) # Output: 'ant'
要使用更高级的枚举技术,请考虑使用 aenum 库。
在早期的 Python 版本中,可以使用自定义来模拟枚举函数:
def enum(**enums): return type('Enum', (), enums)
用法:
Numbers = enum(ONE=1, TWO=2, THREE='three') print(Numbers.ONE) # Output: 1 print(Numbers.THREE) # Output: 'three'
还可以支持自动枚举:
def enum(*sequential, **named): enums = dict(zip(sequential, range(len(sequential))), **named) return type('Enum', (), enums)
用法:
Numbers = enum('ZERO', 'ONE', 'TWO') print(Numbers.ZERO) # Output: 0 print(Numbers.TWO) # Output: 2
或者,使用 Python 3.8 中的 Typing.Literal 或Typing_extensions.Literal 在早期版本中用于定义枚举:
from typing import Literal # Python >= 3.8 from typing_extensions import Literal # Python 2.7, 3.4-3.7 Animal = Literal['ant', 'bee', 'cat', 'dog'] def hello_animal(animal: Animal): print(f"hello {animal}")
以上是如何在 Python 中有效地表示枚举?的详细内容。更多信息请关注PHP中文网其他相关文章!