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))               #

print(type(HttpStatus.OK))               #

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 :

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

你可能感兴趣的:(Python枚举是什么-读懂Python枚举的方法)