Python中模拟enum枚举类型的5种方法分享


Posted in Python onNovember 22, 2014

以下几种方法来模拟enum:(感觉方法一简单实用)

# way1

class Directions:

    up = 0

    down = 1

    left = 2

    right =3

    

print Directions.down
# way2

dirUp, dirDown, dirLeft, dirRight = range(4)
print dirDown
# way3

import collections

dircoll=collections.namedtuple('directions', ('UP', 'DOWN', 'LEFT', 'RIGHT'))

directions=dircoll(0,1,2,3)
print directions.DOWN
# way4

def enum(args, start=0):

    class Enum(object):

        __slots__ = args.split()
        def __init__(self):

            for i, key in enumerate(Enum.__slots__, start):

                setattr(self, key, i)
    return Enum()
e_dir = enum('up down left right')
print e_dir.down
# way5

# some times we need use enum value as string

Directions = {'up':'up','down':'down','left':'left', 'right':'right'}
print Directions['down']

Python 相关文章推荐
使用cx_freeze把python打包exe示例
Jan 24 Python
Python数组定义方法
Apr 13 Python
用pickle存储Python的原生对象方法
Apr 28 Python
Python numpy 常用函数总结
Dec 07 Python
如何用python整理附件
May 13 Python
Python3实现的字典、列表和json对象互转功能示例
May 22 Python
Python实现的大数据分析操作系统日志功能示例
Feb 11 Python
python爬虫的一个常见简单js反爬详解
Jul 09 Python
PYTHON实现SIGN签名的过程解析
Oct 28 Python
使用python创建Excel工作簿及工作表过程图解
May 27 Python
利用Python发送邮件或发带附件的邮件
Nov 12 Python
python数据分析之单因素分析线性拟合及地理编码
Jun 25 Python
Python读写Excel文件方法介绍
Nov 22 #Python
Python中的包和模块实例
Nov 22 #Python
Python动态加载模块的3种方法
Nov 22 #Python
收集的几个Python小技巧分享
Nov 22 #Python
Python获取Windows或Linux主机名称通用函数分享
Nov 22 #Python
Python中使用glob和rmtree删除目录子目录及所有文件的例子
Nov 21 #Python
Python中使用SAX解析xml实例
Nov 21 #Python
You might like
不错的PHP学习之php4与php5之间会穿梭一点点感悟
2007/05/03 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
2016/11/05 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
javascript add event remove event
2008/04/07 Javascript
Javascript与flash交互通信基础教程
2008/08/07 Javascript
基于jquery的多功能软键盘插件
2012/07/25 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
javascript得到当前页的来路即前一页地址的方法
2014/02/18 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
nodejs基础知识
2017/02/03 NodeJs
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
node.js 发布订阅模式的实例
2017/09/10 Javascript
vue中$set的使用(结合在实际应用中遇到的坑)
2018/07/10 Javascript
Weex开发之地图篇的具体使用
2019/10/16 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
Python数据结构之翻转链表
2017/02/25 Python
在django中使用自定义标签实现分页功能
2017/07/04 Python
解决python3爬虫无法显示中文的问题
2018/04/12 Python
python实现按长宽比缩放图片
2018/06/07 Python
Python实现注册、登录小程序功能
2018/09/21 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
2020/06/30 Python
家乐福巴西网上超市:Carrefour巴西
2016/10/31 全球购物
Puccini乌克兰:购买行李箱、女士手袋网上商店
2020/08/06 全球购物
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
中科软测试工程师面试题
2012/06/16 面试题
大学生护理专业自荐信
2013/10/03 职场文书
高中英语演讲稿范文
2014/04/24 职场文书
预防煤气中毒方案
2014/06/16 职场文书
个人党性分析材料
2014/12/19 职场文书
秋收起义观后感
2015/06/11 职场文书