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

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

DDD
发布: 2024-12-13 09:30:14
原创
379 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板