美文网首页
Python:枚举

Python:枚举

作者: 玩转测试开发 | 来源:发表于2021-11-13 11:18 被阅读0次

简介:枚举是与多个唯一常量值绑定的一组符号名(即成员)。枚举中的成员可以进行身份比较,并且枚举自身也可迭代。

主要包含

4个枚举类,用来定义名称与值的唯一组合: Enum、IntEnum、Flag 和 IntFlag。此外,还定义了一个装饰器,unique(), 和一个辅助类,auto。

1、Enum:创建枚举常量的基类。

2、IntEnum:创建 int 子类枚举常量的基类。

3、IntFlag:创建可与位运算符搭配使用,又不失去 IntFlag 成员资格的枚举常量的基类。IntFlag 成员也是 int 的子类。

4、Flag:创建可与位运算符搭配使用,又不会失去 Flag 成员资格的枚举常量的基类。

unique():确保一个名称只绑定一个值的 Enum 类装饰器。
auto:以合适的值代替 Enum 成员的实例。初始值默认从 1 开始。

枚举创建:枚举是由 class 句法创建的

from enum import Enum


class Seasons(Enum):
    Spring = 1
    Summer = 2
    Autumn = 3
    Winter = 4

迭代访问枚举:

for i in Seasons:
    print(i)

枚举成员的 类型 就是它所属的枚举:重要

print(type(Seasons.Summer))  # <enum 'Seasons'>
print(isinstance(Seasons.Summer, Seasons))  # True

Enum 成员 name 属性,访问枚举成员的 name:重要

print(Seasons.Autumn.name)  # Autumn

Enum 成员 value 属性,访问枚举成员的 value:重要

print(Seasons.Winter.value)  # 4

枚举成员可哈希,可用于字典和集合:

weather = {}
weather[Seasons.Spring] = '草长莺飞'
weather[Seasons.Summer] = '郁郁葱葱'
result = weather == {Seasons.Spring: '草长莺飞', Seasons.Summer: '郁郁葱葱'}
print(result)  # True

比较运算:枚举成员是按标识号进行比较的。

print(Seasons.Autumn is Seasons.Winter)  # False
print(Seasons.Autumn is Seasons.Autumn)  # True

确保唯一枚举值:@enum.unique专用于枚举的 class 装饰器。

@unique
class Mistake(Enum):
    ONE = 1
    TWO = 2
    THREE = 3
    # FOUR = 3  # ValueError: duplicate values found in <enum 'Mistake'>: FOUR -> THREE


# @enum.unique
# 专用于枚举的 class 装饰器。
# 它会搜索一个枚举的 __members__ 并收集所找到的任何别名;只要找到任何别名就会引发 ValueError 并附带相关细节信息。

源码:

from enum import Enum
from enum import unique  # 确保唯一枚举值


class Seasons(Enum):
    Spring = 1
    Summer = 2
    Autumn = 3
    Winter = 4

    # Winter = 5  # 两个枚举成员的名称不能相同
    # TypeError: Attempted to reuse key: 'Winter'


# 迭代访问枚举:
for i in Seasons:
    print(i)

print("*" * 20)

# 枚举成员的 类型 就是它所属的枚举:
print(type(Seasons.Summer))  # <enum 'Seasons'>
print(isinstance(Seasons.Summer, Seasons))  # True

# Enum 成员 name 属性,访问枚举成员的 name
print(Seasons.Autumn.name)  # Autumn

# Enum 成员 value 属性,访问枚举成员的 value
print(Seasons.Winter.value)  # 4

# 枚举成员可哈希,可用于字典和集合:
weather = {}
weather[Seasons.Spring] = '草长莺飞'
weather[Seasons.Summer] = '郁郁葱葱'
result = weather == {Seasons.Spring: '草长莺飞', Seasons.Summer: '郁郁葱葱'}
print(result)  # True

# 比较运算:枚举成员是按标识号进行比较的。
print(Seasons.Autumn is Seasons.Winter)  # False
print(Seasons.Autumn is Seasons.Autumn)  # True


@unique
class Mistake(Enum):
    # @enum.unique
    # 专用于枚举的 class 装饰器。
    # 它会搜索一个枚举的 __members__ 并收集所找到的任何别名;只要找到任何别名就会引发 ValueError 并附带相关细节信息。
    ONE = 1
    TWO = 2
    THREE = 3
    # FOUR = 3  # ValueError: duplicate values found in <enum 'Mistake'>: FOUR -> THREE

微信公众号:玩转测试开发
欢迎关注,共同进步,谢谢!

相关文章

  • Python枚举

    https://www.cnblogs.com/ucos/p/5896861.html

  • Python枚举

    1. 枚举类型、枚举名称与枚举值 枚举优点: 不可更改性, 不可重复性 2. 枚举比较 枚举只能进行等于比较不能进...

  • python 枚举

  • Python_枚举

    一、枚举 Enum类 Python中所有枚举类型都是enum模块下的Enum类的子类。 枚举中的标识最好全部使用大...

  • Python 同时枚举两个 list

    From: python同时枚举两个python列表?[https://blog.csdn.net/qq_3478...

  • Python中枚举的用法

    Python周技# Python中枚举的用法: 枚举类标签值不可被修改一个标签只能对应一个值,但多个标签可以对应相...

  • Python学习笔记九(枚举)

    枚举 python 3中新增相比字典以及类变量,枚举用来抽象类型具有优势有1、值不可变;2、防止相同值 获取枚举类...

  • 枚举、元类和错误调试

    枚举 在各种编程语言中常用的枚举类型在python中当然不例外的也是有的,创建一个枚举非常简单,如下: 创建了一个...

  • Python进阶 枚举

    枚举(enumerate)是Python内置函数。 enumerate允许我们遍历数据并自动计数 定制从哪个数字开...

  • Python枚举类型

    from enumimport Enum class Color(Enum): Yellow ="#111" ...

网友评论

      本文标题:Python:枚举

      本文链接:https://www.haomeiwen.com/subject/rmgttrtx.html