Python
  • 为什么学Python?
  • Python代码规范
    • 简明概述
    • 注释
    • 命名规范
  • 第一个Python程序
    • Python 简介
    • Python 的安装
    • 第一个 Python 程序
    • 集成开发环境(IDE): PyCharm
  • 基本数据类型和变量
    • Python 语法的简要说明
    • print() 函数
    • Python 的基本数据类型
    • 字符串的编码问题
    • 基本数据类型转换
    • Python 中的变量
  • List 和 Tuple
    • List(列表)
    • tuple(元组)
  • Dict 和 Set
    • 字典(Dictionary)
    • set
  • 条件语句和循环语句
    • 条件语句
    • 循环语句
    • 条件语句和循环语句综合实例
  • 函数
    • Python 自定义函数的基本步骤
    • 函数返回值
    • 函数的参数
    • 函数传值问题
    • 匿名函数
  • 迭代器和生成器
    • 迭代
    • Python 迭代器
    • lsit 生成式(列表生成式)
    • 生成器
    • 迭代器和生成器综合例子
  • 面向对象
    • 面向对象的概念
    • 类的定义和调用
    • 类方法
    • 修改和增加类属性
    • 类和对象
    • 初始化函数
    • 类的继承
    • 类的多态
    • 类的访问控制
  • 模块与包
    • Python 模块简介
    • 模块的使用
    • 主模块和非主模块
    • 包
    • 作用域
  • Python 的 Magic Method
    • Python 的 Magic Method
    • 构造(__new__)和初始化(__init__)
    • 属性的访问控制
    • 对象的描述器
    • 自定义容器(Container)
    • 运算符相关的魔术方法
  • 枚举类
    • 枚举类的使用
    • Enum 的源码
    • 自定义类型的枚举
    • 枚举的比较
  • 元类
    • Python 中类也是对象
    • 使用 type() 动态创建类
    • 什么是元类
    • 自定义元类
    • 使用元类
  • 线程与进程
    • 线程与进程
    • 多线程编程
    • 进程
  • 一步一步了解正则表达式
    • 初识 Python 正则表达式
    • 字符集
    • 数量词
    • 边界匹配符和组
    • re.sub
    • re.match 和 re.search
  • 闭包
  • 装饰器
  • 知识点补漏
    • Python 关键字 yield
  • Python 进阶部分
  • 使用Python虚拟环境
  • Mac中使用virtualenv和virtualenvwrapper
  • Django
Powered by GitBook
On this page
  1. 枚举类

枚举类的使用

实际开发中,我们离不开定义常量,当我们需要定义常量时,其中一个办法是用大写变量通过整数来定义,例如月份:

JAN = 1
FEB = 2
MAR = 3
...
NOV = 11
DEC = 12

当然这样做简单快捷,缺点是类型是 int ,并且仍然是变量。

那有没有什么好的方法呢?

这时候我们定义一个 class 类型,每个常量都是 class 里面唯一的实例。

正好 Python 提供了 Enum 类来实现这个功能如下:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

from enum import Enum

Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))

# 遍历枚举类型
for name, member in Month.__members__.items():
    print(name, '---------', member, '----------', member.value)

# 直接引用一个常量
print('\n', Month.Jan)

输出的结果如下:

我们使用 Enum 来定义了一个枚举类。

上面的代码,我们创建了一个有关月份的枚举类型 Month ,这里要注意的是构造参数,第一个参数 Month 表示的是该枚举类的类名,第二个 tuple 参数,表示的是枚举类的值;当然,枚举类通过 __members__ 遍历它的所有成员的方法。

注意的一点是 , member.value 是自动赋给成员的 int 类型的常量,默认是从 1 开始的。

而且 Enum 的成员均为单例(Singleton),并且不可实例化,不可更改

Previous枚举类NextEnum 的源码

Last updated 2 months ago