首页 >后端开发 >Python教程 >如何在 Python 中有效地表示枚举?

如何在 Python 中有效地表示枚举?

DDD
DDD原创
2024-12-13 09:30:14439浏览

How Can I Effectively Represent Enums in Python?

在 Python 中表示枚举

在 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 3.4 之前版本的替代方法

在早期的 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn