Python枚举是什么-读懂Python枚举的方法

enum 是一组绑定到唯一常数值的符号名称,并且具备可迭代性和可比较性的特性。我们可以使用 enum 创建具有良好定义的标识符,而不是直接使用魔法字符串或整数,也便于开发工程师的代码维护。

创建枚举

我们可以使用 class 语法创建一个枚举类型,方便我们进行读写,另外,根据函数 API 的描述定义,我们可以创建一个 enum 的子类,如下:

1

2

3

4

5

6

7

8

9

from enum import Enum

 

class HttpStatus(Enum):

  OK = 200

  BAD_REQUEST = 400

  FORBIDDEN = 403

  NOT_FOUND = 404

  REQUEST_TIMEOUT = 408

  SERVICE_UNAVAILABLE = 500

注意: 枚举属性值可以是任何东西: int, str 等。如果确切的值不重要,您可以使用 auto 实例,并为您选择适当的值。如果您将 auto 与其他值混合,则必须小心。 枚举类型中,不可以设置相同名称的 name,可以有相同的 value。

enum 自带属性 name 和 value,日常工作中使用最多的也是这两个属性,我们打印看看结果:

1

2

3

4

5

6

print('Member: {}'.format(HttpStatus.OK))        # Member: HttpStatus.OK

print('Member name: {}'.format(HttpStatus.OK.name))   # Member name: OK

print('Member value: {}'.format(HttpStatus.OK.value))  # Member value: 200

print(repr(HttpStatus.OK))               # <enum 'HttpStatus'>

print(type(HttpStatus.OK))               # <HttpStatus.OK: 200>

print(isinstance(HttpStatus.OK, HttpStatus))      # True

枚举迭代

枚举支持迭代和遍历顺序。举个例子:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

from enum import Enum, auto

 

# 创建

class HttpStatus(Enum):

  OK = 200

  BAD_REQUEST = 400

  FORBIDDEN = 403

  NOT_FOUND = 404

  REQUEST_TIMEOUT = 408

  SERVICE_UNAVAILABLE = 500

  OTHER = auto.value

 

# 迭代

for status in HttpStatus:

  print('{} : {}'.format(status.name, status.value))

打印结果:

OK : 200
BAD_REQUEST : 400
FORBIDDEN : 403
NOT_FOUND : 404
REQUEST_TIMEOUT : 408
SERVICE_UNAVAILABLE : 500
OTHER : <object object at 0x000002863E1D7B10>

可以看出,遍历的每一个 status 是一个独立的枚举成员,拥有 name 和 value 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值